Discovery and management of devices

ABSTRACT

An embodiment includes a computational instance managing a managed network of computing devices, some communicating by proprietary protocol, and comprising a database storing representations of the computing devices and one or more sets of program logic configured to support the proprietary protocol, as well as one or more server devices configured to: receive, from an edge gateway software application, a request identifying a particular computing device on the managed network that communicates by the proprietary protocol; based on this request, select a set of the program logic configured to support the proprietary protocol; transmit a representation of the program logic, receipt of which is configured to cause the edge gateway software application to execute the set of program logic and obtain thereby configuration and state information from the particular computing device; receive, from the edge gateway software application, the configuration and state information; and store the configuration and state information.

REFERENCE TO RELATED APPLICATION

This application is a divisional of U.S. patent application Ser. No.16/058,112, filed Aug. 8, 2018, which claims priority to U.S.Provisional Patent Application No. 62/667,716, filed on May 7, 2018, thedisclosures of which are hereby incorporated by reference in theirentirety.

BACKGROUND

A managed network (e.g., an enterprise network) is often a complexentity with many interrelated components carrying out variousoperations. Such a network may contain devices that are easilydiscovered and controlled in a predictable manner using standard accessprotocols. However, the network may also contain devices that do notsupport common access protocols. Some of these devices may support onlyproprietary protocols, while others might not even connect directly tothe network. Therefore, conventional device discovery mechanisms mightnot be able to discover and manage such devices.

SUMMARY

Described herein are embodiments that detail the use an edge gateway tofacilitate communication with devices on a network. Specifically, theembodiments herein describe the use of an edge gateway that has theability to communicate to the devices in accordance with non-standard orproprietary protocols supported by these devices. Further embodimentsillustrate that the edge gateway may also be able to receive programlogic containing routines or scripts that can be executed on the edgegateway so that the discovery of and any eventual orchestrationsinvolving one or more devices on the network can be effectively andefficiently performed.

Further, the edge gateway may discover or be configured withdescriptions, properties, and/or capabilities of the devices on thenetwork, and may provide digital representations thereof to a databasefor storage as configuration items. Based on the information containedin these digital representations, a computational instance of a remotenetwork management platform with access to the database may create orupdate tasks for the edge gateway to undertake, which may allow the edgegateway (as well as the computational instance) to more effectivelycommunicate with and manage the devices on the network. In this way, theedge gateway may act as a bridge by which this data can be gathered,analyzed, and utilized to improve operational processes. Thus, with theembodiments herein, the remote network management platform can be usedto manage virtually any type of device on virtually any type of network,including non-standard devices and networks.

Accordingly, a first example embodiment may involve a computationalinstance of a remote network management platform, wherein thecomputational instance manages a managed network containing computingdevices, at least some of which communicate by way of a proprietaryprotocol. The first example embodiment may also involve thecomputational instance comprising a database storing representations ofthe computing devices in the managed network as configuration items, andone or more sets of program logic configured to support the proprietaryprotocol, and one or more server devices configured to: (i) receive,from an edge gateway software application associated with the managednetwork, a request that identifies a particular computing device on themanaged network that communicates by way of the proprietary protocol;(ii) based on the request, select a set of the program logic, from theone or more sets of program logic, that is configured to support theproprietary protocol; (iii) transmit, to the edge gateway softwareapplication, a representation of the program logic, receipt of which isconfigured to cause the edge gateway software application to be able toexecute the set of program logic and obtain thereby configuration andstate information from the particular computing device; (iv) receive,from the edge gateway software application, the configuration and stateinformation, and (v) store, in the database, the configuration and stateinformation.

In a second example embodiment, an article of manufacture may include anon-transitory computer-readable medium, having stored thereon programinstructions that, upon execution by a computing system, cause thecomputing system to perform operations in accordance with the firstexample embodiment.

In a third example embodiment, a computing system may include at leastone processor, as well as memory and program instructions. The programinstructions may be stored in the memory, and upon execution by the atleast one processor, cause the computing system to perform operations inaccordance with the first example embodiment.

In a fourth example embodiment, a system may include various means forcarrying out each of the operations of the first example embodiment.

These as well as other embodiments, aspects, advantages, andalternatives will become apparent to those of ordinary skill in the artby reading the following detailed description, with reference whereappropriate to the accompanying drawings. Further, this summary andother descriptions and figures provided herein are intended toillustrate embodiments by way of example only and, as such, thatnumerous variations are possible. For instance, structural elements andprocess steps can be rearranged, combined, distributed, eliminated, orotherwise changed, while remaining within the scope of the embodimentsas claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a schematic drawing of a computing device, inaccordance with example embodiments.

FIG. 2 illustrates a schematic drawing of a server device cluster, inaccordance with example embodiments.

FIG. 3 depicts a remote network management architecture, in accordancewith example embodiments.

FIG. 4 depicts a communication environment involving a remote networkmanagement architecture, in accordance with example embodiments.

FIG. 5A depicts another communication environment involving a remotenetwork management architecture, in accordance with example embodiments.

FIG. 5B is a flow chart, in accordance with example embodiments.

FIG. 6A depicts another communication environment involving a remotenetwork management architecture, in accordance with example embodiments.

FIG. 6B is a message flow diagram, in accordance with exampleembodiments.

FIG. 7A depicts another communication environment involving a remotenetwork management architecture including a refrigeration system, inaccordance with example embodiments.

FIG. 7B depicts an example compositional view of a refrigeration system,in accordance with example embodiments.

FIG. 7C depicts an example state representation of a refrigerationsystem, in accordance with example embodiments.

FIG. 7D depicts an example dependency architecture representation of arefrigeration system, in accordance with example embodiments.

FIG. 7E depicts an example state representation of communicationenvironment capabilities involving a refrigeration system, in accordancewith example embodiments.

FIG. 8 depicts another communication environment involving a remotenetwork management architecture including a conference room system, inaccordance with example embodiments.

FIG. 9 depicts another communication environment involving a remotenetwork management architecture including a passenger train system, inaccordance with example embodiments.

FIG. 10 is a flow chart, in accordance with example embodiments.

FIG. 11 is a flow chart, in accordance with example embodiments.

DETAILED DESCRIPTION

Example methods, devices, and systems are described herein. It should beunderstood that the words “example” and “exemplary” are used herein tomean “serving as an example, instance, or illustration.” Any embodimentor feature described herein as being an “example” or “exemplary” is notnecessarily to be construed as preferred or advantageous over otherembodiments or features unless stated as such. Thus, other embodimentscan be utilized and other changes can be made without departing from thescope of the subject matter presented herein.

Accordingly, the example embodiments described herein are not meant tobe limiting. It will be readily understood that the aspects of thepresent disclosure, as generally described herein, and illustrated inthe figures, can be arranged, substituted, combined, separated, anddesigned in a wide variety of different configurations. For example, theseparation of features into “client” and “server” components may occurin a number of ways.

Further, unless context suggests otherwise, the features illustrated ineach of the figures may be used in combination with one another. Thus,the figures should be generally viewed as component aspects of one ormore overall embodiments, with the understanding that not allillustrated features are necessary for each embodiment.

Additionally, any enumeration of elements, blocks, or steps in thisspecification or the claims is for purposes of clarity. Thus, suchenumeration should not be interpreted to require or imply that theseelements, blocks, or steps adhere to a particular arrangement or arecarried out in a particular order.

I. INTRODUCTION

A large enterprise is a complex entity with many interrelatedoperations. Some of these are found across the enterprise, such as humanresources (HR), supply chain, information technology (IT), and finance.However, each enterprise also has its own unique operations that provideessential capabilities and/or create competitive advantages.

To support widely-implemented operations, enterprises typically useoff-the-shelf software applications, such as customer relationshipmanagement (CRM) and human capital management (HCM) packages. However,they may also need custom software applications to meet their own uniquerequirements. A large enterprise often has dozens or hundreds of thesecustom software applications. Nonetheless, the advantages provided bythe embodiments herein are not limited to large enterprises and may beapplicable to an enterprise, or any other type of organization, of anysize.

Many such software applications are developed by individual departmentswithin the enterprise. These range from simple spreadsheets tocustom-built software tools and databases. But the proliferation ofsiloed custom software applications has numerous disadvantages. Itnegatively impacts an enterprise's ability to run and grow itsoperations, innovate, and meet regulatory requirements. The enterprisemay find it difficult to integrate, streamline and enhance itsoperations due to lack of a single system that unifies its subsystemsand data.

To efficiently create custom applications, enterprises would benefitfrom a remotely-hosted application platform that eliminates unnecessarydevelopment complexity. The goal of such a platform would be to reducetime-consuming, repetitive application development tasks so thatsoftware engineers and individuals in other roles can focus ondeveloping unique, high-value features.

In order to achieve this goal, the concept of Application Platform as aService (aPaaS) is introduced, to intelligently automate workflowsthroughout the enterprise. An aPaaS system is hosted remotely from theenterprise, but may access data, applications, and services within theenterprise by way of secure connections. Such an aPaaS system may have anumber of advantageous capabilities and characteristics. Theseadvantages and characteristics may be able to improve the enterprise'soperations and workflow for IT, HR, CRM, customer service, applicationdevelopment, and security.

The aPaaS system may support development and execution ofmodel-view-controller (MVC) applications. MVC applications divide theirfunctionality into three interconnected parts (model, view, andcontroller) in order to isolate representations of information from themanner in which the information is presented to the user, therebyallowing for efficient code reuse and parallel development. Theseapplications may be web-based, and offer create, read, update, delete(CRUD) capabilities. This allows new applications to be built on acommon application infrastructure.

The aPaaS system may support standardized application components, suchas a standardized set of widgets for graphical user interface (GUI)development. In this way, applications built using the aPaaS system havea common look and feel. Other software components and modules may bestandardized as well. In some cases, this look and feel can be brandedor skinned with an enterprise's custom logos and/or color schemes.

The aPaaS system may support the ability to configure the behavior ofapplications using metadata. This allows application behaviors to berapidly adapted to meet specific needs. Such an approach reducesdevelopment time and increases flexibility. Further, the aPaaS systemmay support GUI tools that facilitate metadata creation and management,thus reducing errors in the metadata.

The aPaaS system may support clearly-defined interfaces betweenapplications, so that software developers can avoid unwantedinter-application dependencies. Thus, the aPaaS system may implement aservice layer in which persistent state information and other data isstored.

The aPaaS system may support a rich set of integration features so thatthe applications thereon can interact with legacy applications andthird-party applications. For instance, the aPaaS system may support acustom employee-onboarding system that integrates with legacy HR, IT,and accounting systems.

The aPaaS system may support enterprise-grade security. Furthermore,since the aPaaS system may be remotely hosted, it should also utilizesecurity procedures when it interacts with systems in the enterprise orthird-party networks and services hosted outside of the enterprise. Forexample, the aPaaS system may be configured to share data amongst theenterprise and other parties to detect and identify common securitythreats.

Other features, functionality, and advantages of an aPaaS system mayexist. This description is for purpose of example and is not intended tobe limiting.

As an example of the aPaaS development process, a software developer maybe tasked to create a new application using the aPaaS system. First, thedeveloper may define the data model, which specifies the types of datathat the application uses and the relationships therebetween. Then, viaa GUI of the aPaaS system, the developer enters (e.g., uploads) the datamodel. The aPaaS system automatically creates all of the correspondingdatabase tables, fields, and relationships, which can then be accessedvia an object-oriented services layer.

In addition, the aPaaS system can also build a fully-functional MVCapplication with client-side interfaces and server-side CRUD logic. Thisgenerated application may serve as the basis of further development forthe user. Advantageously, the developer does not have to spend a largeamount of time on basic application functionality. Further, since theapplication may be web-based, it can be accessed from anyInternet-enabled client device. Alternatively or additionally, a localcopy of the application may be able to be accessed, for instance, whenInternet service is not available.

The aPaaS system may also support a rich set of pre-definedfunctionality that can be added to applications. These features includesupport for searching, email, templating, workflow design, reporting,analytics, social media, scripting, mobile-friendly output, andcustomized GUIs.

The following embodiments describe architectural and functional aspectsof example aPaaS systems, as well as the features and advantagesthereof.

II. EXAMPLE COMPUTING DEVICES AND CLOUD-BASED COMPUTING ENVIRONMENTS

FIG. 1 is a simplified block diagram exemplifying a computing device100, illustrating some of the components that could be included in acomputing device arranged to operate in accordance with the embodimentsherein. Computing device 100 could be a client device (e.g., a deviceactively operated by a user), a server device (e.g., a device thatprovides computational services to client devices), or some other typeof computational platform. Some server devices may operate as clientdevices from time to time in order to perform particular operations, andsome client devices may incorporate server features.

In this example, computing device 100 includes processor 102, memory104, network interface 106, and an input/output unit 108, all of whichmay be coupled by a system bus 110 or a similar mechanism. In someembodiments, computing device 100 may include other components and/orperipheral devices (e.g., detachable storage, printers, and so on).

Processor 102 may be one or more of any type of computer processingelement, such as a central processing unit (CPU), a co-processor (e.g.,a mathematics, graphics, or encryption co-processor), a digital signalprocessor (DSP), a network processor, and/or a form of integratedcircuit or controller that performs processor operations. In some cases,processor 102 may be one or more single-core processors. In other cases,processor 102 may be one or more multi-core processors with multipleindependent processing units. Processor 102 may also include registermemory for temporarily storing instructions being executed and relateddata, as well as cache memory for temporarily storing recently-usedinstructions and data.

Memory 104 may be any form of computer-usable memory, including but notlimited to random access memory (RAM), read-only memory (ROM), andnon-volatile memory (e.g., flash memory, hard disk drives, solid statedrives, compact discs (CDs), digital video discs (DVDs), and/or tapestorage). Thus, memory 104 represents both main memory units, as well aslong-term storage. Other types of memory may include biological memory.

Memory 104 may store program instructions and/or data on which programinstructions may operate. By way of example, memory 104 may store theseprogram instructions on a non-transitory, computer-readable medium, suchthat the instructions are executable by processor 102 to carry out anyof the methods, processes, or operations disclosed in this specificationor the accompanying drawings.

As shown in FIG. 1, memory 104 may include firmware 104A, kernel 104B,and/or applications 104C. Firmware 104A may be program code used to bootor otherwise initiate some or all of computing device 100. Kernel 104Bmay be an operating system, including modules for memory management,scheduling and management of processes, input/output, and communication.Kernel 104B may also include device drivers that allow the operatingsystem to communicate with the hardware modules (e.g., memory units,networking interfaces, ports, and busses), of computing device 100.Applications 104C may be one or more user-space software programs, suchas web browsers or email clients, as well as any software libraries usedby these programs. Memory 104 may also store data used by these andother programs and applications.

Network interface 106 may take the form of one or more wirelineinterfaces, such as Ethernet (e.g., Fast Ethernet, Gigabit Ethernet, andso on). Network interface 106 may also support communication over one ormore non-Ethernet media, such as coaxial cables or power lines, or overwide-area media, such as Synchronous Optical Networking (SONET) ordigital subscriber line (DSL) technologies. Network interface 106 mayadditionally take the form of one or more wireless interfaces, such asIEEE 802.11 (Wifi), BLUETOOTH®, global positioning system (GPS), or awide-area wireless interface. However, other forms of physical layerinterfaces and other types of standard or proprietary communicationprotocols may be used over network interface 106. Furthermore, networkinterface 106 may comprise multiple physical interfaces. For instance,some embodiments of computing device 100 may include Ethernet,BLUETOOTH®, and Wifi interfaces.

Input/output unit 108 may facilitate user and peripheral deviceinteraction with example computing device 100. Input/output unit 108 mayinclude one or more types of input devices, such as a keyboard, a mouse,a touch screen, and so on. Similarly, input/output unit 108 may includeone or more types of output devices, such as a screen, monitor, printer,and/or one or more light emitting diodes (LEDs). Additionally oralternatively, computing device 100 may communicate with other devicesusing a universal serial bus (USB) or high-definition multimediainterface (HDMI) port interface, for example.

In some embodiments, one or more instances of computing device 100 maybe deployed to support an aPaaS architecture. The exact physicallocation, connectivity, and configuration of these computing devices maybe unknown and/or unimportant to client devices. Accordingly, thecomputing devices may be referred to as “cloud-based” devices that maybe housed at various remote data center locations.

FIG. 2 depicts a cloud-based server cluster 200 in accordance withexample embodiments. In FIG. 2, operations of a computing device (e.g.,computing device 100) may be distributed between server devices 202,data storage 204, and routers 206, all of which may be connected bylocal cluster network 208. The number of server devices 202, datastorages 204, and routers 206 in server cluster 200 may depend on thecomputing task(s) and/or applications assigned to server cluster 200.

For example, server devices 202 can be configured to perform variouscomputing tasks of computing device 100. Thus, computing tasks can bedistributed among one or more of server devices 202. To the extent thatthese computing tasks can be performed in parallel, such a distributionof tasks may reduce the total time to complete these tasks and return aresult. For purpose of simplicity, both server cluster 200 andindividual server devices 202 may be referred to as a “server device.”This nomenclature should be understood to imply that one or moredistinct server devices, data storage devices, and cluster routers maybe involved in server device operations.

Data storage 204 may be data storage arrays that include drive arraycontrollers configured to manage read and write access to groups of harddisk drives and/or solid state drives. The drive array controllers,alone or in conjunction with server devices 202, may also be configuredto manage backup or redundant copies of the data stored in data storage204 to protect against drive failures or other types of failures thatprevent one or more of server devices 202 from accessing units ofcluster data storage 204. Other types of memory aside from drives may beused.

Routers 206 may include networking equipment configured to provideinternal and external communications for server cluster 200. Forexample, routers 206 may include one or more packet-switching and/orrouting devices (including switches and/or gateways) configured toprovide (i) network communications between server devices 202 and datastorage 204 via cluster network 208, and/or (ii) network communicationsbetween the server cluster 200 and other devices via communication link210 to network 212.

Additionally, the configuration of cluster routers 206 can be based atleast in part on the data communication requirements of server devices202 and data storage 204, the latency and throughput of the localcluster network 208, the latency, throughput, and cost of communicationlink 210, and/or other factors that may contribute to the cost, speed,fault-tolerance, resiliency, efficiency and/or other design goals of thesystem architecture.

As a possible example, data storage 204 may include any form ofdatabase, such as a structured query language (SQL) database. Varioustypes of data structures may store the information in such a database,including but not limited to tables, arrays, lists, trees, and tuples.Furthermore, any databases in data storage 204 may be monolithic ordistributed across multiple physical devices.

Server devices 202 may be configured to transmit data to and receivedata from cluster data storage 204. This transmission and retrieval maytake the form of SQL queries or other types of database queries, and theoutput of such queries, respectively. Additional text, images, video,and/or audio may be included as well. Furthermore, server devices 202may organize the received data into web page representations. Such arepresentation may take the form of a markup language, such as thehypertext markup language (HTML), the extensible markup language (XML),or some other standardized or proprietary format. Moreover, serverdevices 202 may have the capability of executing various types ofcomputerized scripting languages, such as but not limited to Perl,Python, PHP Hypertext Preprocessor (PHP), Active Server Pages (ASP),JavaScript, and so on. Computer program code written in these languagesmay facilitate the providing of web pages to client devices, as well asclient device interaction with the web pages.

III. EXAMPLE REMOTE NETWORK MANAGEMENT ARCHITECTURE

FIG. 3 depicts a remote network management architecture, in accordancewith example embodiments. This architecture includes three maincomponents, managed network 300, remote network management platform 320,and third-party networks 340, all connected by way of Internet 350.

Managed network 300 may be, for example, an enterprise network used byan entity for computing and communications tasks, as well as storage ofdata. Thus, managed network 300 may include various client devices 302,server devices 304, routers 306, virtual machines 308, firewall 310,and/or proxy servers 312. Client devices 302 may be embodied bycomputing device 100, server devices 304 may be embodied by computingdevice 100 or server cluster 200, and routers 306 may be any type ofrouter, switch, or gateway.

Virtual machines 308 may be embodied by one or more of computing device100 or server cluster 200. In general, a virtual machine is an emulationof a computing system, and mimics the functionality (e.g., processor,memory, and communication resources) of a physical computer. Onephysical computing system, such as server cluster 200, may support up tothousands of individual virtual machines. In some embodiments, virtualmachines 308 may be managed by a centralized server device orapplication that facilitates allocation of physical computing resourcesto individual virtual machines, as well as performance and errorreporting. Enterprises often employ virtual machines in order toallocate computing resources in an efficient, as needed fashion.Providers of virtualized computing systems include VMWARE® andMICROSOFT®.

Firewall 310 may be one or more specialized routers or server devicesthat protect managed network 300 from unauthorized attempts to accessthe devices, applications, and services therein, while allowingauthorized communication that is initiated from managed network 300.Firewall 310 may also provide intrusion detection, web filtering, virusscanning, application-layer gateways, and other applications orservices. In some embodiments not shown in FIG. 3, managed network 300may include one or more virtual private network (VPN) gateways withwhich it communicates with remote network management platform 320 (seebelow).

Managed network 300 may also include one or more proxy servers 312. Anembodiment of proxy servers 312 may be a server device that facilitatescommunication and movement of data between managed network 300, remotenetwork management platform 320, and third-party networks 340. Inparticular, proxy servers 312 may be able to establish and maintainsecure communication sessions with one or more computational instancesof remote network management platform 320. By way of such a session,remote network management platform 320 may be able to discover andmanage aspects of the architecture and configuration of managed network300 and its components. Possibly with the assistance of proxy servers312, remote network management platform 320 may also be able to discoverand manage aspects of third-party networks 340 that are used by managednetwork 300.

Firewalls, such as firewall 310, typically deny all communicationsessions that are incoming by way of Internet 350, unless such a sessionwas ultimately initiated from behind the firewall (i.e., from a deviceon managed network 300) or the firewall has been explicitly configuredto support the session. By placing proxy servers 312 behind firewall 310(e.g., within managed network 300 and protected by firewall 310), proxyservers 312 may be able to initiate these communication sessions throughfirewall 310. Thus, firewall 310 might not have to be specificallyconfigured to support incoming sessions from remote network managementplatform 320, thereby avoiding potential security risks to managednetwork 300.

In some cases, managed network 300 may consist of a few devices and asmall number of networks. In other deployments, managed network 300 mayspan multiple physical locations and include hundreds of networks andhundreds of thousands of devices. Thus, the architecture depicted inFIG. 3 is capable of scaling up or down by orders of magnitude.

Furthermore, depending on the size, architecture, and connectivity ofmanaged network 300, a varying number of proxy servers 312 may bedeployed therein. For example, each one of proxy servers 312 may beresponsible for communicating with remote network management platform320 regarding a portion of managed network 300. Alternatively oradditionally, sets of two or more proxy servers may be assigned to sucha portion of managed network 300 for purposes of load balancing,redundancy, and/or high availability.

Remote network management platform 320 is a hosted environment thatprovides aPaaS services to users, particularly to the operators ofmanaged network 300. These services may take the form of web-basedportals, for instance. Thus, a user can securely access remote networkmanagement platform 320 from, for instance, client devices 302, orpotentially from a client device outside of managed network 300. By wayof the web-based portals, users may design, test, and deployapplications, generate reports, view analytics, and perform other tasks.

As shown in FIG. 3, remote network management platform 320 includes fourcomputational instances 322, 324, 326, and 328. Each of these instancesmay represent a set of web portals, services, and applications (e.g., awholly-functioning aPaaS system) available to a particular customer. Insome cases, a single customer may use multiple computational instances.For example, managed network 300 may be an enterprise customer of remotenetwork management platform 320, and may use computational instances322, 324, and 326. The reason for providing multiple instances to onecustomer is that the customer may wish to independently develop, test,and deploy its applications and services. Thus, computational instance322 may be dedicated to application development related to managednetwork 300, computational instance 324 may be dedicated to testingthese applications, and computational instance 326 may be dedicated tothe live operation of tested applications and services. A computationalinstance may also be referred to as a hosted instance, a remoteinstance, a customer instance, or by some other designation.

The multi-instance architecture of remote network management platform320 is in contrast to conventional multi-tenant architectures, overwhich multi-instance architectures have several advantages. Inmulti-tenant architectures, data from different customers (e.g.,enterprises) are comingled in a single database. While these customers'data are separate from one another, the separation is enforced by thesoftware that operates the single database. As a consequence, a securitybreach in this system may impact all customers' data, creatingadditional risk, especially for entities subject to governmental,healthcare, and/or financial regulation. Furthermore, any databaseoperations that impact one customer will likely impact all customerssharing that database. Thus, if there is an outage due to hardware orsoftware errors, this outage affects all such customers. Likewise, ifthe database is to be upgraded to meet the needs of one customer, itwill be unavailable to all customers during the upgrade process. Often,such maintenance windows will be long, due to the size of the shareddatabase.

In contrast, the multi-instance architecture provides each customer withits own database in a dedicated computing instance. This preventscomingling of customer data, and allows each instance to beindependently managed. For example, when one customer's instanceexperiences an outage due to errors or an upgrade, other computationalinstances are not impacted. Maintenance down time is limited because thedatabase only contains one customer's data. Further, the simpler designof the multi-instance architecture allows redundant copies of eachcustomer database and instance to be deployed in a geographicallydiverse fashion. This facilitates high availability, where the liveversion of the customer's instance can be moved when faults are detectedor maintenance is being performed.

In order to support multiple computational instances in an efficientfashion, remote network management platform 320 may implement aplurality of these instances on a single hardware platform. For example,when the aPaaS system is implemented on a server cluster such as servercluster 200, it may operate a virtual machine that dedicates varyingamounts of computational, storage, and communication resources toinstances. But full virtualization of server cluster 200 might not benecessary, and other mechanisms may be used to separate instances. Insome examples, each instance may have a dedicated account and one ormore dedicated databases on server cluster 200. Alternatively,computational instance 322 may span multiple physical devices.

In some cases, a single server cluster of remote network managementplatform 320 may support multiple independent enterprises. Furthermore,as described below, remote network management platform 320 may includemultiple server clusters deployed in geographically diverse data centersin order to facilitate load balancing, redundancy, and/or highavailability.

Third-party networks 340 may be remote server devices (e.g., a pluralityof server clusters such as server cluster 200) that can be used foroutsourced computational, data storage, communication, and servicehosting operations. These servers may be virtualized (i.e., the serversmay be virtual machines). Examples of third-party networks 340 mayinclude AMAZON WEB SERVICES® and MICROSOFT® Azure. Like remote networkmanagement platform 320, multiple server clusters supporting third-partynetworks 340 may be deployed at geographically diverse locations forpurposes of load balancing, redundancy, and/or high availability.

Managed network 300 may use one or more of third-party networks 340 todeploy applications and services to its clients and customers. Forinstance, if managed network 300 provides online music streamingservices, third-party networks 340 may store the music files and provideweb interface and streaming capabilities. In this way, the enterprise ofmanaged network 300 does not have to build and maintain its own serversfor these operations.

Remote network management platform 320 may include modules thatintegrate with third-party networks 340 to expose virtual machines andmanaged services therein to managed network 300. The modules may allowusers to request virtual resources and provide flexible reporting forthird-party networks 340. In order to establish this functionality, auser from managed network 300 might first establish an account withthird-party networks 340, and request a set of associated resources.Then, the user may enter the account information into the appropriatemodules of remote network management platform 320. These modules maythen automatically discover the manageable resources in the account, andalso provide reports related to usage, performance, and billing.

Internet 350 may represent a portion of the global Internet. However,Internet 350 may alternatively represent a different type of network,such as a private wide-area or local-area packet-switched network.

FIG. 4 further illustrates the communication environment between managednetwork 300 and computational instance 322, and introduces additionalfeatures and alternative embodiments. In FIG. 4, computational instance322 is replicated across data centers 400A and 400B. These data centersmay be geographically distant from one another, perhaps in differentcities or different countries. Each data center includes supportequipment that facilitates communication with managed network 300, aswell as remote users.

In data center 400A, network traffic to and from external devices flowseither through VPN gateway 402A or firewall 404A. VPN gateway 402A maybe peered with VPN gateway 412 of managed network 300 by way of asecurity protocol such as Internet Protocol Security (IPSEC) orTransport Layer Security (TLS). Firewall 404A may be configured to allowaccess from authorized users, such as user 414 and remote user 416, andto deny access to unauthorized users. By way of firewall 404A, theseusers may access computational instance 322, and possibly othercomputational instances. Load balancer 406A may be used to distributetraffic amongst one or more physical or virtual server devices that hostcomputational instance 322. Load balancer 406A may simplify user accessby hiding the internal configuration of data center 400A, (e.g.,computational instance 322) from client devices. For instance, ifcomputational instance 322 includes multiple physical or virtualcomputing devices that share access to multiple databases, load balancer406A may distribute network traffic and processing tasks across thesecomputing devices and databases so that no one computing device ordatabase is significantly busier than the others. In some embodiments,computational instance 322 may include VPN gateway 402A, firewall 404A,and load balancer 406A.

Data center 400B may include its own versions of the components in datacenter 400A. Thus, VPN gateway 402B, firewall 404B, and load balancer406B may perform the same or similar operations as VPN gateway 402A,firewall 404A, and load balancer 406A, respectively. Further, by way ofreal-time or near-real-time database replication and/or otheroperations, computational instance 322 may exist simultaneously in datacenters 400A and 400B.

Data centers 400A and 400B as shown in FIG. 4 may facilitate redundancyand high availability. In the configuration of FIG. 4, data center 400Ais active and data center 400B is passive. Thus, data center 400A isserving all traffic to and from managed network 300, while the versionof computational instance 322 in data center 400B is being updated innear-real-time. Other configurations, such as one in which both datacenters are active, may be supported.

Should data center 400A fail in some fashion or otherwise becomeunavailable to users, data center 400B can take over as the active datacenter. For example, domain name system (DNS) servers that associate adomain name of computational instance 322 with one or more InternetProtocol (IP) addresses of data center 400A may re-associate the domainname with one or more IP addresses of data center 400B. After thisre-association completes (which may take less than one second or severalseconds), users may access computational instance 322 by way of datacenter 400B.

FIG. 4 also illustrates a possible configuration of managed network 300.As noted above, proxy servers 312 and user 414 may access computationalinstance 322 through firewall 310. Proxy servers 312 may also accessconfiguration items 410. In FIG. 4, configuration items 410 may refer toany or all of client devices 302, server devices 304, routers 306, andvirtual machines 308, any applications or services executing thereon, aswell as relationships between devices, applications, and services. Thus,the term “configuration items” may be shorthand for any physical orvirtual device, or any application or service remotely discoverable ormanaged by computational instance 322, or relationships betweendiscovered devices, applications, and services. Configuration items maybe represented in a configuration management database (CMDB) ofcomputational instance 322.

As noted above, VPN gateway 412 may provide a dedicated VPN to VPNgateway 402A. Such a VPN may be helpful when there is a significantamount of traffic between managed network 300 and computational instance322, or security policies otherwise suggest or require use of a VPNbetween these sites. In some embodiments, any device in managed network300 and/or computational instance 322 that directly communicates via theVPN is assigned a public IP address. Other devices in managed network300 and/or computational instance 322 may be assigned private IPaddresses (e.g., IP addresses selected from the 10.0.0.0-10.255.255.255or 192.168.0.0-192.168.255.255 ranges, represented in shorthand assubnets 10.0.0.0/8 and 192.168.0.0/16, respectively).

IV. EXAMPLE DEVICE, APPLICATION, AND SERVICE DISCOVERY

In order for remote network management platform 320 to administer thedevices, applications, and services of managed network 300, remotenetwork management platform 320 may first determine what devices arepresent in managed network 300, the configurations and operationalstatuses of these devices, and the applications and services provided bythe devices, and well as the relationships between discovered devices,applications, and services. As noted above, each device, application,service, and relationship may be referred to as a configuration item.The process of defining configuration items within managed network 300is referred to as discovery, and may be facilitated at least in part byproxy servers 312.

For purpose of the embodiments herein, an “application” may refer to oneor more processes, threads, programs, client modules, server modules, orany other software that executes on a device or group of devices. A“service” may refer to a high-level capability provided by multipleapplications executing on one or more devices working in conjunctionwith one another. For example, a high-level web service may involvemultiple web application server threads executing on one device andaccessing information from a database application that executes onanother device.

FIG. 5A provides a logical depiction of how configuration items can bediscovered, as well as how information related to discoveredconfiguration items can be stored. For sake of simplicity, remotenetwork management platform 320, third-party networks 340, and Internet350 are not shown.

In FIG. 5A, CMDB 500 and task list 502 are stored within computationalinstance 322. Computational instance 322 may transmit discovery commandsto proxy servers 312. In response, proxy servers 312 may transmit probesto various devices, applications, and services in managed network 300.These devices, applications, and services may transmit responses toproxy servers 312, and proxy servers 312 may then provide informationregarding discovered configuration items to CMDB 500 for storagetherein. Configuration items stored in CMDB 500 represent theenvironment of managed network 300.

Task list 502 represents a list of activities that proxy servers 312 areto perform on behalf of computational instance 322. As discovery takesplace, task list 502 is populated. Proxy servers 312 repeatedly querytask list 502, obtain the next task therein, and perform this task untiltask list 502 is empty or another stopping condition has been reached.

To facilitate discovery, proxy servers 312 may be configured withinformation regarding one or more subnets in managed network 300 thatare reachable by way of proxy servers 312. For instance, proxy servers312 may be given the IP address range 192.168.0/24 as a subnet. Then,computational instance 322 may store this information in CMDB 500 andplace tasks in task list 502 for discovery of devices at each of theseaddresses.

FIG. 5A also depicts devices, applications, and services in managednetwork 300 as configuration items 504, 506, 508, 510, and 512. As notedabove, these configuration items represent a set of physical and/orvirtual devices (e.g., client devices, server devices, routers, orvirtual machines), applications executing thereon (e.g., web servers,email servers, databases, or storage arrays), relationshipstherebetween, as well as services that involve multiple individualconfiguration items.

Placing the tasks in task list 502 may trigger or otherwise cause proxyservers 312 to begin discovery. Alternatively or additionally, discoverymay be manually triggered or automatically triggered based on triggeringevents (e.g., discovery may automatically begin once per day at aparticular time).

In general, discovery may proceed in four logical phases: scanning,classification, identification, and exploration. Each phase of discoveryinvolves various types of probe messages being transmitted by proxyservers 312 to one or more devices in managed network 300. The responsesto these probes may be received and processed by proxy servers 312, andrepresentations thereof may be transmitted to CMDB 500. Thus, each phasecan result in more configuration items being discovered and stored inCMDB 500.

In the scanning phase, proxy servers 312 may probe each IP address inthe specified range of IP addresses for open Transmission ControlProtocol (TCP) and/or User Datagram Protocol (UDP) ports to determinethe general type of device. The presence of such open ports at an IPaddress may indicate that a particular application is operating on thedevice that is assigned the IP address, which in turn may identify theoperating system used by the device. For example, if TCP port 135 isopen, then the device is likely executing a WINDOWS® operating system.Similarly, if TCP port 22 is open, then the device is likely executing aUNIX® operating system, such as LINUX®. If UDP port 161 is open, thenthe device may be able to be further identified through the SimpleNetwork Management Protocol (SNMP). Other possibilities exist. Once thepresence of a device at a particular IP address and its open ports havebeen discovered, these configuration items are saved in CMDB 500.

In the classification phase, proxy servers 312 may further probe eachdiscovered device to determine the version of its operating system. Theprobes used for a particular device are based on information gatheredabout the devices during the scanning phase. For example, if a device isfound with TCP port 22 open, a set of UNIX®-specific probes may be used.Likewise, if a device is found with TCP port 135 open, a set ofWINDOWS®-specific probes may be used. For either case, an appropriateset of tasks may be placed in task list 502 for proxy servers 312 tocarry out. These tasks may result in proxy servers 312 logging on, orotherwise accessing information from the particular device. Forinstance, if TCP port 22 is open, proxy servers 312 may be instructed toinitiate a Secure Shell (SSH) connection to the particular device andobtain information about the operating system thereon from particularlocations in the file system. Based on this information, the operatingsystem may be determined. As an example, a UNIX® device with TCP port 22open may be classified as AIX®, HPUX, LINUX®, MACOS®, or SOLARIS®. Thisclassification information may be stored as one or more configurationitems in CMDB 500.

In the identification phase, proxy servers 312 may determine specificdetails about a classified device. The probes used during this phase maybe based on information gathered about the particular devices during theclassification phase. For example, if a device was classified as LINUX®,a set of LINUX®-specific probes may be used. Likewise if a device wasclassified as WINDOWS® 2012, as a set of WINDOWS®-2012-specific probesmay be used. As was the case for the classification phase, anappropriate set of tasks may be placed in task list 502 for proxyservers 312 to carry out. These tasks may result in proxy servers 312reading information from the particular device, such as basicinput/output system (BIOS) information, serial numbers, networkinterface information, media access control address(es) assigned tothese network interface(s), IP address(es) used by the particular deviceand so on. This identification information may be stored as one or moreconfiguration items in CMDB 500.

In the exploration phase, proxy servers 312 may determine furtherdetails about the operational state of a classified device. The probesused during this phase may be based on information gathered about theparticular devices during the classification phase and/or theidentification phase. Again, an appropriate set of tasks may be placedin task list 502 for proxy servers 312 to carry out. These tasks mayresult in proxy servers 312 reading additional information from theparticular device, such as processor information, memory information,lists of running processes (applications), and so on. Once more, thediscovered information may be stored as one or more configuration itemsin CMDB 500.

Running discovery on a network device, such as a router, may utilizeSNMP. Instead of or in addition to determining a list of runningprocesses or other application-related information, discovery maydetermine additional subnets known to the router and the operationalstate of the router's network interfaces (e.g., active, inactive, queuelength, number of packets dropped, etc.). The IP addresses of theadditional subnets may be candidates for further discovery procedures.Thus, discovery may progress iteratively or recursively.

Once discovery completes, a snapshot representation of each discovereddevice, application, and service is available in CMDB 500. For example,after discovery, operating system version, hardware configuration andnetwork configuration details for client devices, server devices, androuters in managed network 300, as well as applications executingthereon, may be stored. This collected information may be presented to auser in various ways to allow the user to view the hardware compositionand operational status of devices, as well as the characteristics ofservices that span multiple devices and applications.

Furthermore, CMDB 500 may include entries regarding dependencies andrelationships between configuration items. More specifically, anapplication that is executing on a particular server device, as well asthe services that rely on this application, may be represented as suchin CMDB 500. For instance, suppose that a database application isexecuting on a server device, and that this database application is usedby a new employee onboarding service as well as a payroll service. Thus,if the server device is taken out of operation for maintenance, it isclear that the employee onboarding service and payroll service will beimpacted. Likewise, the dependencies and relationships betweenconfiguration items may be able to represent the services impacted whena particular router fails.

In general, dependencies and relationships between configuration itemsmay be displayed on a web-based interface and represented in ahierarchical fashion. Thus, adding, changing, or removing suchdependencies and relationships may be accomplished by way of thisinterface.

Furthermore, users from managed network 300 may develop workflows thatallow certain coordinated activities to take place across multiplediscovered devices. For instance, an IT workflow might allow the user tochange the common administrator password to all discovered LINUX®devices in single operation.

In order for discovery to take place in the manner described above,proxy servers 312, CMDB 500, and/or one or more credential stores may beconfigured with credentials for one or more of the devices to bediscovered. Credentials may include any type of information needed inorder to access the devices. These may include userid/password pairs,certificates, and so on. In some embodiments, these credentials may bestored in encrypted fields of CMDB 500. Proxy servers 312 may containthe decryption key for the credentials so that proxy servers 312 can usethese credentials to log on to or otherwise access devices beingdiscovered.

The discovery process is depicted as a flow chart in FIG. 5B. At block520, the task list in the computational instance is populated, forinstance, with a range of IP addresses. At block 522, the scanning phasetakes place. Thus, the proxy servers probe the IP addresses for devicesusing these IP addresses, and attempt to determine the operating systemsthat are executing on these devices. At block 524, the classificationphase takes place. The proxy servers attempt to determine the operatingsystem version of the discovered devices. At block 526, theidentification phase takes place. The proxy servers attempt to determinethe hardware and/or software configuration of the discovered devices. Atblock 528, the exploration phase takes place. The proxy servers attemptto determine the operational state and applications executing on thediscovered devices. At block 530, further editing of the configurationitems representing the discovered devices and applications may takeplace. This editing may be automated and/or manual in nature.

The blocks represented in FIG. 5B are for purpose of example. Discoverymay be a highly configurable procedure that can have more or fewerphases, and the operations of each phase may vary. In some cases, one ormore phases may be customized, or may otherwise deviate from theexemplary descriptions above.

V. DISCOVERY AND MANAGEMENT OF INTERNET OF THINGS (IOT) DEVICES

The term Internet of Things (IOT) generally refers to discrete devicesor device components, such as embedded controllers, sensors, actuators,software modules, or combinations thereof, that have Internet or IPconnectivity and can be remotely accessed or controlled. Sometimes thesedevices are alternatively referred to as “smart” devices due to theirability to carry out simple or complex operations in response tocommands or other input. Examples of IOT devices include, but are notlimited to: learning thermostats, smart light switches and electricaloutlets, online speakers, smart locks, medical monitoring devices,voice-controlled assistants, home or enterprise automation devices,biochip implants for livestock, temperature sensors, actuators for doorsand other physical devices, remote-controlled cameras and microphones,motion sensors, and so on.

In some cases, IOT devices may be discovered and controlled in themanner discussed above. Namely, these devices may be discovered by aproxy server, probed for configuration and capabilities using an accessprotocol such as SSH or SNMP, and then remotely controlled or monitoredby these or other protocols. But not all IOT devices support commonaccess protocols. Some support only proprietary IP-based protocols,while others might not even connect directly to an IP network.Therefore, the discovery mechanisms described above might not be able todiscover and manage many types of IOT devices.

In order to overcome this drawback, the embodiments herein use an edgegateway to facilitate communication with IOT devices on a network. Thenetwork may be an enterprise network, manufacturing or industrialnetwork, agricultural network, home network, a bus-based network, a meshnetwork, a local area network, etc. The edge gateway serves a similarfunction as the proxy server described above, but has the ability tocommunicate to the IOT devices on the network in accordance with theprotocols supported by these IOT devices. The edge gateway may also beable to receive program logic that contains routines or scripts that canbe executed on the edge gateway so that orchestrations involving one ormore IOT devices can be performed. Still, like the proxy server, theedge gateway may discover or be configured with descriptions,properties, and/or capabilities of the IOT devices on the network, andmay provide representations thereof to a CMDB for storage asconfiguration items.

For example, consider a network that supports three IOT devices: deviceA, device B, and device C. Assume, for sake of example, that device Asupports remote access via SNMP, while devices B and C only supportrespective proprietary protocols. Herein, a “proprietary protocol” mayrefer to a communication protocol owned or defined by a singleorganization or individual, which may also place restrictions on the useof the protocol and change the protocol unilaterally, among otherpossibilities. Proprietary protocols need not be maintained as secrets.

The edge gateway may be configured to interact with device A using SNMP,interact with device B using its proprietary protocol, and interact withdevice C using its proprietary protocol. The edge gateway may furtherreceive, from a computational instance for example, program logic thatcauses the edge gateway to activate a particular function of device Cwhen device A and device B are in respective particular states.Furthermore, this programmability may allow the edge gateway to carryout functions and/or interact with IOT devices even if the network istemporarily disconnected from the Internet or the remote networkmanagement platform.

Advantageously, this architecture expands the reach of the remotenetwork management platform beyond that of management of enterprisenetworks. With the embodiments herein, the remote network managementplatform can be used to manage virtually any type of device on virtuallyany type of network, including non-standard devices and networks.

Thus, in order for the remote network management platform to administerthe devices, applications, and services of a network, the remote networkmanagement platform may first determine what devices are present in thenetwork, the configurations and operational statuses of these devices,and the applications and services provided by the devices (e.g.,embedded controllers, sensors, actuators, software modules, orcombinations thereof, whether they have Internet or IP connectivity andcan be remotely accessed or controlled, etc.), as well as therelationships between discovered devices, applications, and services.But, as noted above, each device in the network may not be able to beaccessed or assessed through use of conventional protocols. Thus, aprocess of communicating with, defining, and discovering devices withinthe network may be facilitated at least in part by an intermediarydevice (e.g., an edge gateway).

Notably, an edge gateway may be a computing device in accordance withcomputing device 100, with one or more network interfaces. Such an edgegateway may be placed on or associated with a managed network, and maybe able to communicate with devices on the managed network as well aswith a computational instance of a remote network management platform.In some cases, the edge gateway may support at least some routerfunctionality. Alternatively, an edge gateway may be a deployablesoftware module that can operate on a number of different device types.

FIG. 6A provides a logical depiction of how devices on such a networkcan be discovered, as well as how information related to discovereddevices can be stored. This type of discovery, however, might notencompass all of the steps and processes as described above inconnection with proxy server 312. Instead, discovery in connection withan edge gateway may be quite different as different protocols may beused to allow or ensure that the edge gateway can connect andcommunicate with a host of devices, regardless of their individualattributes (e.g., use of proprietary IP-based protocols, limited or noconnectivity to an IP network, etc.). The system in FIG. 6A containscomputational instance 322, containing a database (labeled here as CMDB500) and task list 502, in communication with edge gateway 602. Edgegateway may be part of managed network 600 and in communication withcomputing devices 604, 606, 608, 610, and 612. Furthermore, for sake ofsimplicity, remote network management platform 320, third-party networks340, and Internet 350 are not shown.

Like FIG. 5A, in FIG. 6A CMDB 500 and task list 502 are stored withincomputational instance 322. Edge gateway 602 may retrieve and/or receivetasks from computational instance 322 and, in response, may transmitcommands and/or queries to various devices in managed network 600. Thesedevices may then transmit responses to edge gateway 602, and edgegateway 602 may then provide information regarding discovered devices toCMDB 500 for storage therein. This information may be presented to CMDB500 (and computational instance 322, generally) in a fashion that CMDB500 is configured to support, herein referred to as a digitalrepresentation. The digital representations may be stored in CMDB 500 asconfiguration items that represent the environment of managed network600, which may also contain sub-environments or related devices (e.g.,those used in a home, a car, a lawn, and so on, all of which operate onmanaged network 600).

Task list 502 represents a list of tasks that edge gateway 602 performson behalf of computational instance 322 via the discovered devices. Asdevices are discovered, task list 502 may be populated. Edge gateway 602then repeatedly queries task list 502, obtains the next task therein,and performs this task until task list 502 is empty or another stoppingcondition has been reached.

To facilitate this communication with discovered devices, edge gateway602 may be configured to communicate to the devices on managed network600 in accordance with the protocols supported by these devices.Alternatively, edge gateway 602 may also be able to receive programlogic from remote network management platform 320 (e.g., as a task viatask list 502) that contains routines or scripts that can be executed onedge gateway 602 so that the discovery of and orchestrations involvingone or more devices can be performed. Additionally, similar to proxyserver 312, edge gateway 602 may discover or be configured withdescriptions, properties, and/or capabilities of the devices on managednetwork 600, and may provide representations thereof to a CMDB 500 forstorage (e.g., as a configuration item).

Edge gateway 602 may also be designed and configured to have a smallphysical footprint. For instance, it may be if implemented as acontainerized runtime application or software (e.g., using DOCKER®) on asmall platform (e.g., RASPBERRY PI®) and/or be configured to allowitself to be embedded into other gateway offerings (e.g., an EDGEXFOUNDRY® gateway). Edge gateway 602, similar to proxy server 312, mayalso initiate communication sessions with the computational instance,which may improve enterprise security concerns and not require specificfirewall configurations to allow unsolicited inbound communication fromthe computational instance. Instead, the computational instance canresponsively communicate to the edge gateway, which will in turncommunicate with the devices on the network, through an on-instance workqueue similar to how proxy server 312 works and is described above.

FIG. 6A also depicts devices in managed network 600 as computing devices604, 606, 608, 610, and 612. As noted above, these devices represent aset of physical and/or virtual devices (e.g., learning thermostats,smart light switches and electrical outlets, online speakers, smartlocks, medical monitoring devices, voice-controlled assistants, home orenterprise automation devices, biochip implants for livestock,temperature sensors, actuators for doors and other physical devices,remote-controlled cameras and microphones, motion sensors, clientdevices, server devices, routers, or virtual machines, and so on), aswell as devices that involve multiple individual devices (e.g., anetwork of multiple temperature sensors). The connectivity between edgegateway 602 and computing devices 604, 606, 608, 610, and 612 may be anyform of wireline or wireless network, including Ethernet, Wifi,BLUETOOTH®, one or more communication busses, etc.

Placing the tasks in task list 502 may trigger or otherwise cause edgegateway 602 to begin discovering devices or update or adjust its ongoingdevice discovery efforts. Alternatively or additionally, devicediscovery may be manually triggered or automatically triggered based ontriggering events (e.g., discovery may automatically begin once per dayat a particular time or upon manual request).

In a further aspect, device discovery by edge gateway 602 may be basedon local logic or protocols that do not require a trigger from otherdevices or the computational instance (e.g., the receipt of a task fromtask list 502). For example, edge gateway 602 may run local programlogic (e.g., via an edge gateway software application) that discoversthat one device on managed network 600 supports remote access via one ormore standard protocols (e.g., SNMP), while another device does not.Without further instruction from other devices outside of managednetwork 600, edge gateway 602 may be able and configured to interactwith both the first device (e.g., using SNMP) and the second device(e.g., using its proprietary protocol). In this respect, edge gateway602 may carry out functions and/or interact with devices on managednetwork 600 even if the network is temporarily disconnected fromcomputational instance 322 (or remote network management platform 320,third-party networks 340, or Internet 350).

Device discovery may also proceed in one or more phases, pursuant to oneor more protocols. In a first example, as shown in FIG. 6A, edge gateway602 may receive program logic via one or more tasks from computationalinstance 322 that contains routines or scripts that can be executed onedge gateway 602. These scripts or routines may cause edge gateway 602to send commands to devices within managed network 600. These commandsmay request that the devices send their descriptions, properties, and/orcapabilities back to edge gateway 602.

Such commands may lead to one or more shared protocols being establishedbetween edge gateway 602 and these devices, either directly (e.g., viaan established or standardized protocol) or after some furtherresolution between the edge gateway and the devices (e.g., via aproprietary protocol with which the edge gateway is programmed to beable to communicate). In this way, edge gateway 602 can establishcommunication with any type of device on managed network 600, includingnon-standard devices operating under non-standard protocol.

As an example, suppose that computing device 604 supports standard TCPand/or UDP IP communication, but does not support communication orcontrol via conventional access protocols, such as SNMP or SSH. Duringdiscovery, edge gateway 602 (or a proxy server not shown) may determinethat a TCP port X is open on computing device 604. With thisinformation, edge gateway 602 may determine that it may be able tocommunicate with computing device 604 by way of a proprietary protocolthat uses port X because program logic for this protocol has beeninstalled on edge gateway 602. Alternatively, edge gateway 602 mayrequest such program logic from computational instance 322 by specifyingport X, for example. Computational instance 322 may transmit therequested program logic to edge gateway 602, and the latter may install,execute, and use the program logic to attempt to access computing device604. In a further aspect, computational instance 322 may also (e.g., inCMDB 500) mappings between TCP or UDP ports and sets of program logic.In this way, computational instance 322 may select a set of programlogic by finding a mapping from the open TCP or UDP port on theparticular computing device to the set of program logic

Once such a path of communication is established, edge gateway 602 mayelicit information from one or more of computing devices on managednetwork 600 (shown here as 604, 606, 608, 610, and 612). In this phase,edge gateway 602 may send queries to and receive responses from thedevices on managed network 600 to determine specific details about oneor more of the devices on the network. For example, during thiscommunication, edge gateway 602 may determine that computing device 604has one set of attributes (e.g., a door actuator that has twocontrollable states, fully extended and fully retracted, andcommunicates via SNMP), while computing device 606 has another set ofattributes (e.g., a home stereo speaker that can stream music via anestablished network, but can only be communicated with via a proprietaryprotocol). By determining these attributes of devices on managed network600, edge gateway 602 can determine how it should communicate with thesedevices and any further information it may elicit moving forward (e.g.,whether the door is open or closed, whether music is playing via thehome stereo speaker, as well as what type of music and at what volume,and so on). Either way, the information edge gateway 602 receives fromthe devices on managed network 600 may facilitate further actions by theedge gateway.

In one scenario, edge gateway 602, pursuant to one or more localprograms or logic, may command and manage the devices locally withinmanaged network 600 without further input from computational instance322 (e.g., if the music playing from a home stereo speaker is playingabove a predetermined volume, the edge gateway causes a door actuator tofully retract and close the door). But, this orchestration of devices onmanaged network 600 can also be based on local programs or logic thatmay be updated periodically and/or dynamically based on the state andcapabilities of the individual devices (e.g., the home stereo speaker isoverheating when operating above a predetermined volume), or thesub-environment, environment, or network in which they are operating,and via one or more protocols (e.g., the edge gateway receives anupdated task from task list 502, another device is added to managednetwork 600, etc.). Under any of these scenarios, edge gateway may alsobe configured to convert this information to be uploaded and understoodby another entity.

For example, edge gateway 602 may elicit and gather information fromdevices on managed network 600, all of which may have differentattributes and communicate via various proprietary protocols, and simplywant to report that information about the discovered devices upstream tocomputational instance 322 (e.g., so that this information may be storedin CMDB 500). To do this, edge gateway may utilize one or more protocolsto ensure the uniformity of the reported information, and its compliancewith protocol it may establish (or may have established) withcomputational instance 322. In this way, edge gateway 602 may passdetails about or communications from the devices in managed network 600to computational instance 322. To do so, edge gateway 602 may need toperform one or more protocol translations to convert a variety ofstandard and non-standard machine languages and/or communicationprotocols that computational instance 322 does not support beforepassing communications to the computational instance (e.g., convertMessage Queuing Telemetry Transport (MQTT) to Hypertext TransferProtocol (HTTP)).

For example, assuming that all discovered devices on managed network 600are physical objects (e.g., learning thermostats, smart light switchesand electrical outlets, online speakers, smart locks, medical monitoringdevices, voice-controlled assistants, temperature sensors, actuators fordoors and other physical devices, remote-controlled cameras andmicrophones, motion sensors, etc.), edge gateway 602 may model theattributes of these objects (e.g., state and capabilities) beforereporting to computational instance 322. By converting data andinformation that may be received from the devices on managed network 600in a variety of formats and protocols to a format or protocol readilyand uniformly understood by computational instance 322, thecomputational instance may receive data that it is configured tosupport, which is also organized and batched in a manner also supportingthe computational instance.

To do so, edge gateway 602 may run a local program to aggregate gatheredinformation on the discovered devices and create digital representationsof these devices. In a further aspect, edge gateway 602 may adjust thegranularity of the digital representation and the information that isconsidered in creating that digital representation (e.g., the attributesand capabilities of the discovered device, such as what sensor data canbe obtained and/or current senor data, whether it can call web APIsand/or if it currently doing so, etc.). In this way, the digitalrepresentation may act as a stand in for the physical objects (devices)in managed network 600 to associate sensors and their readings, trackand query status, determine ability to take action on the devices andunderstand how those devices relate to other devices in the network.

This digital representation may also contain code or other digitallanguage and constructs indicating properties that represent the statusof the physical object, understandings of how to determine a device'sstate based on values of its properties and/or other devices related toit, capabilities of the device that describe what it can do (e.g.,actuate a device's components and/or sensors, call web APIs, publishmessages, communicate with other devices to determine theircapabilities, etc.), and so on. Thus, this digital representation of oneor more devices on managed network 600 may be derived by edge gateway602 from sensors, actuators, and inputs on the devices, web APIs (in thecloud, on managed network 600, or otherwise), values calculated by edgegateway 602 based on this information, and other digital representationsthat edge gateway 602 has created in the past, among otherpossibilities. The creation of this digital representation may be basedon one or more protocols (e.g., event driven state based actiondetermination and specification defined either in script or in adecision table), and result in one or more formats (e.g., JavaScriptObject Representation). Based on limited re-engagement with the deviceson the network, particularly after an initial discovery of the device(e.g., ongoing digital representations may also be based on querying viaRepresentational State Transfer (REST) API (e.g., defining a set ofconstraints and properties based on HTTP) and/or other APIs to determinelast known state of the device without having to go query each of theknown sensors on the device).

Regardless, this digital representations model may serve as a constructof the physical discovered devices that exists digitally and may be usedto model the properties and capabilities of the discovered devices inmanaged network 600 so that they can be represented, controlled, andinteracted with at the local edge gateway level, as well as upstream atthe computational instance level (and/or the remote network managementplatform level).

Once edge gateway 602 has gathered and converted the data received fromthe devices on managed network 600, it may further organize and batchthe data before sending it to computational instance 322. For example,edge gateway 602 may determine that computing devices 604 and 606 relateto computing devices used for a home (e.g., a door actuator and homestereo speaker, respectively), while computing devices 608 and 610relate to devices used in a car (e.g., an ignition switch andspeedometer, respectively) and computing device 612 is a lawn managementdevice (e.g., a sprinkler system). In this scenario, edge gateway 602could gather and convert all of the information gained from the deviceson managed network 600 to digital representations pursuant to a protocolor format computational instance 322 is configured to support, and thensend that information, piecewise, to the computational instance as soonas it is prepared.

However, edge gateway 602 could also organize the received information,or any digital representation based on that information, before sendingit to computational instance 322. In one example, edge gateway 602 maygather all of the information from computing devices 604, 606, 608, 610,and 612, and then organize that information based on a local protocolthat allows sorting of related information before conversion to adigital representation the computational instance is configured tosupport. At a low level of granularity, edge gateway 602 could receivedata from the devices on managed network 600, realize that each deviceis unique (both in its state and capabilities), create a digitalrepresentation for each, and then send them individually based on one ormore predetermined protocols (e.g., at different periodic intervals,based on different thresholds of received information, etc.). At aslightly higher level of granularity, edge gateway 602 could receivedata from the devices on managed network 600, realize that while eachdevice is unique (both in its state and capabilities), some are relatedin the sub-environments in which they operate (e.g., computing devices604 and 606 are home devices, computing devices 608 and 610 are cardevices, and computing device 612 is a lawn management device). Inresponse, edge gateway 602 could instead create a digital representationfor the devices operating in each sub-environment, and then send themindividually based on one or more predetermined protocols (e.g., sendhome device batches every 10 mins and lawn management batches everyhour).

Alternatively or additionally, edge gateway 602 may gather theinformation from computing devices 604, 606, 608, 610, and 612, convertit all to a digital representation that computational instance 322 isconfigured to support, and then organize the digital representationsbased on a local protocol before sending the data to computationalinstance 322. For example, edge gateway 602 could receive data from thedevices on managed network 600, create digital representations for each(e.g., based on each device's state and capabilities), and then sendthem individually based on one or more predetermined protocols. In oneexample, these digital representations could be sent to computationalinstance 322 at predetermined periodic intervals (e.g., batch alldigital representations created for devices on managed network 600 over30-second intervals and then send them to the computational instance).In another example, the digital representations could be sent tocomputational instance 322 based on different thresholds of receivedinformation (e.g., only send digital representation of computing device608 (an ignition switch) when the device is engaged).

At a slightly higher-level of granularity, edge gateway 602 couldreceive data from the devices on managed network 600, convert it to adigital representation that computational instance 322 is configured tosupport, realize that some of the devices are related in theenvironments in which they operate (e.g., computing devices 604 and 606are home devices, computing devices 608 and 610 are car devices, andcomputing device 612 is a lawn management device), and create a digitalrepresentation for each environment. Then, edge gateway 602 could sendthe digital representations of the devices and/or the environments basedon one or more predetermined protocols (e.g., periodically, with digitalrepresentations of home devices and/or the home environment sent morefrequently than those of the lawn management device).

Furthermore, these protocols for sending digital representations for thedevices on managed network 600 to computational instance 322 may changeover time. For example, edge gateway 602 may gather and convert at leastsome of the information it can obtain about the devices on managednetwork 600 and then send digital representations for each device (e.g.,state and capabilities) to computational instance 322 for storage inCMDB 500. By doing so, CMDB may have an initial snapshot representationof all the devices (and their individual states and capabilities) atthat given moment. Then, in a second example, once CMDB 500 has a storedlist of the states and capabilities of the devices in managed network600, edge gateway 602 may send further digital representations ofdevices in managed network 600 if something changes within the network(e.g., if the state or capability of any individual device changes, if adevice is added to the network, and so on). In this way, edge gateway602 may do limited transformation and/or reporting on communicationsreceived from devices on managed network 600 in order to filter data tobe sent to computational instance 322 for situations where not all theinformation in the communication is meaningful to be collected in thecomputational instance (e.g., a sensor value has not changed, so thereis no need to send it to server again).

Under any of these scenarios, however, organizing and batching theinformation and/or digital representations created by edge gateway 602before sending digital representations to computational instance 322allows edge gateway 602 to both effectively manage the devices withinthe network locally, as well as deliver digital representations of thosedevices to the computational instance under protocol the computationalinstance finds most useful. And, of course, this process may progressiteratively or recursively.

In a further aspect, once CMDB 500 has received digital representationsof the devices in managed network 600, further tasks may be created fortask list 502 (or tasks within task list 502 may be updated) in responseto these digital representations. These updated tasks in task list 502may also trigger or otherwise cause edge gateway 602 to update or adjustits ongoing device discovery efforts and/or adjust its local programlogic used to manage or communicate with those devices (running, e.g.,via an edge gateway software application). In some cases, because somedevices on managed network 600 may be discovered and controlled in themanner discussed above (e.g., by a proxy server, probed forconfiguration and capabilities using an access protocol such as SSH orSNMP, and then remotely controlled or monitored by these protocols), theiterative nature of this discovery, reporting digital representationsthereof, and receiving updated tasks based on that reporting, may befairly fluid and uninterrupted.

However, because not all devices on managed network 600 may supportcommon access protocols (e.g., support only proprietary IP-basedprotocols, are not even connect directly to an IP network, etc.), someof the discovery mechanisms described above might not be able toautomatically discover and manage these types of devices on the network.For example, edge gateway 602 could discover a device on managed network600 that it realizes is present on the network, but is not configured tocommunicate with (e.g., the device uses a proprietary protocol that edgegateway 602 is not configured to communicate by way of). Edge gateway602 may create what limited digital representation it can of thepartially discovered device (e.g., a digital representation thatindicates the presence of the device on the network, but not its stateor capabilities) and send that digital representation to computationalinstance for storage on CMDB 500. Then, once received and stored,computational instance 322 could create a new task for task list 502that contains program logic for effectively communicating with thepartially discovered device, which triggers or otherwise causes edgegateway 602 to update its local programs or logic, and begincommunicating with the device in a more robust way (e.g., bycommunicating with it under its proprietary protocol and discovering thestate and capabilities of the device). In this respect, edge gateway 602may carry out functions and/or interact with devices on managed network600 that may not otherwise be possible for computational instance 322.

As noted above, edge gateway 602 may carry out a standard probingprotocol for devices on managed network 600 that includes probing eachIP address in the specified range of IP addresses for open TCP and/orUDP ports to determine the general type of device and the edge gateway'sability to communicate with that type of device. Moreover, the presenceof such open TCP ports at an IP address may indicate that a particularapplication is operating on the device that is assigned the IP address,which in turn may identify the operating system used by the device. Inthis way, edge gateway 602 may determine that a particular computingdevice is disposed upon the managed network by probing a range ofInternet Protocol (IP) addresses of the managed network for devicesconfigured with IP addresses within a specified range.

For example, during this probing, edge gateway 602 may determine thatTCP port 135 is open on computing device 604. Further, edge gateway 602may attempt to probe the particular computing device by way of each ofthe one or more specific standard communication protocols, but determinethat the probes have failed to access the particular computing device.Although edge gateway 602 may not be configured to perform the correctcommunication protocol based on that open port on computing device 604,or be configured to communicate with the computing device generally,edge gateway 602 may nevertheless create what limited digitalrepresentation it can of the partially discovered device (e.g., adigital representation that indicates TCP port 135 is open on computingdevice 604, but not the device's state or capabilities) and send thatdigital representation to computational instance for storage on CMDB500.

Then, once computational instance 322 receives and stores the digitalrepresentation, computational instance 322 may be configured torecognize that an open TCP port 135 on the computing device indicatesthat the device is likely executing a WINDOWS® operating system.Accordingly, computational instance 322 could create a new task for tasklist 502 that contains program logic for effectively communicating withthe WINDOWS® operating system on computing device 604. Furthermore, asdescribed above, the retrieval of this task by edge gateway 602 maytrigger the edge gateway to update its local programs or logic to beable to recognize and communicate with devices running WINDOWS®operating system, and begin communicating with computing device 604 in amore robust way (e.g., by communicating with it under WINDOWS® protocoland discovering the state and capabilities of the device).

Furthermore, CMDB 500 may include entries regarding dependencies andrelationships between the devices on managed network 600. Morespecifically, a device operating in a particular environment, as well asthe devices that may rely on or communicate with this device in thatenvironment, may be represented as such in CMDB 500. For instance,suppose that a user is driving a car with computing devices 608 and 610(e.g., an ignition switch and speedometer, respectively). Thus, ifcomputing device 608 is taken out of operation for maintenance (e.g.,the ignition switch is removed for repair), it is clear that computingdevice 610 will be impacted (e.g., become non-functional when the carcannot start without the ignition switch).

Once device discovery on managed network 600 is completed (or is at somesufficient iteration), a snapshot representation of each discovereddevice and its attributes (e.g., state and capabilities) may beavailable in CMDB 500. This collected information may be presented to auser in various ways to allow the user to view the compositions andoperational statuses of the devices on managed network 600, as well asthe characteristics of environments that may contain multiple deviceswithin the network.

In general, dependencies and relationships between devices may bedisplayed on a web-based interface and represented in a hierarchicalfashion (e.g., via a GUI). Thus, adding, changing, or removing suchdependencies and relationships may be accomplished by way of thisinterface. For example, a dedicated user interface may be created basedon the digital representations of the devices in managed network 600. Inthis way, the user interface may inspect and adjust the granularity ofthe digital representation in ways that are meaningful to the user(e.g., define the properties of any given device or environment, astheir capabilities and/or dependencies on other devices and/orenvironments), without having to navigate multiple user interfaces.Alternatively, because a user's interaction with user interface canoften be complex and/or error-prone, a more logical or guided userinterface (e.g., a series of GUI widgets that provide logical workflowmay) be presented that is likely to operate with fewer errors.

Further, this user interface may allow a user to specify a visualrepresentation of the device or component the user would like to controlor monitor in managed network 600 (or perhaps an environment thereof).In other words, the user should be able to design and interact with theuser interface in a way that does not require specific technicalexpertise (e.g., that of a data scientist) to understand and work withthe devices of network at a level of granularity they so choose. Forexample, if the environment within managed network 600 the user wants tointeract is a car with computing devices 608, an ignition switch, and610, a speedometer, then visual representation of that environment viathe user interface would show the visual of the aspects of a car and thesensors associated with it (e.g., an ignition switch, as an image of anilluminated or non-illuminated ignition button), rather than as a flatdata stream coming from the car (e.g., ignition_switch_sensor_on). Thisexample should not be read as limiting, however, as the user interfacemay be used to present a host of metrics and that allows the user tochoose which are the most important for their individual experience withthe user interface (e.g., properties, capabilities, and/or state ofdevice, sensors that are attached to and/or associated with the device,REST APIs that can be used to interact with the device, a visualrepresentation of the device via the user interface, the relationshipsof the device to other devices on the network and otherwise, and so on).

Furthermore, users from managed network 600 may develop workflows thatallow certain coordinated activities to take place across multiplediscovered devices and control those workflows from the user interface.For instance, a user may want all devices in managed network 600 topower off until further input from the user. A user may also want tocontrol an individual device on the network (e.g., increase the volumeof playback from a home stereo speaker). Other examples are possible.

FIG. 6B is a message flow diagram further illustrating an exampleembodiment. The process illustrated by FIG. 6B may be carried out by oneor more computing devices, such as computing device 100, and/or acluster of computing devices, such as server cluster 200.

FIG. 6B provides an example signal flow for computing devices 604 and606 and edge gateway 602 operating in a given network, with the edgegateway in further communication with computational instance 322. Theembodiments of FIG. 6B may be simplified by the removal of either of thedevices shown therein. Further, these embodiments may be combined withfeatures, aspects, and/or implementations of any of the previous figuresor otherwise described herein.

In this example, as illustrated in FIG. 6B, edge gateway 602 may berunning a local program or logic (e.g., via an edge gateway softwareapplication) that facilitates device discovery within a specificnetwork. For example, edge gateway 602 may detect that computing devices604 and 606 are present on a specific network. In response, edge gateway602 may generate a command to each device to send a list of eachdevice's state and capabilities, shown here as commands 614 and 616 forcomputing devices 604 and 606, respectively. Although these commands arediscussed here as contemporaneous, they may be separated in time orpursuant to variety of individualized protocols.

Either way, responsive to sending commands 614 and 616, edge gateway 602may receive responses from computing devices 604 and 606, shown here asresponses 618 and 620, respectively. These responses may indicate thediscreteness of computing devices 604 and 606, the components making upeach device (e.g., embedded controllers, sensors, actuators, softwaremodules, or combinations thereof), the Internet or IP connectivity ofeach device, the preferred communication protocol for each device (e.g.,proprietary or otherwise), whether each device can be remotely accessedor controlled, and so on. In some cases, these devices' configurationsand capabilities may be discovered by a standardized protocol (probedvia an access protocol such as SSH or SNMP), and then remotelycontrolled or monitored by the same protocol. In other cases, however,it may not be so simple. The following example scenario, as alsoexplained in the context of FIG. 6B, helps illustrate the ability of theedge gateway and computational instance 322 to dynamically respond toand control both of these types of devices on the network.

Specifically, in an example embodiment, response 618 from computingdevice 604 may contain information that is both helpful to edge gateway602 in managing the device on the network and in a language the edgegateway is configured to support (e.g., a list of components that may bemeasured and controlled in computing device 604 via an SNMP protocolwith the edge gateway). Conversely, response 620 from computing device606 may contain information that may not be as helpful to edge gateway602 (e.g., a message indicating computing device 606 can onlycommunicate via a proprietary IP-based protocol, through which edgegateway 602 is not configured to communicate). Thus, without any furtherinput, edge gateway 602 may determine that it can interact with and/ormanage computing device 604 under one or more local programs or logic,but cannot do so to the same extent with computing device 606 (as apartially discovered device).

Regardless, edge gateway 602 may convert the information it received inresponse 618, and to a lesser extent response 620, into information thatis well understood by and potentially useful for computational instance322. Specifically, edge gateway may gather, convert, and batch thisinformation into digital representations of these two scenarios (i.e.,digital representations of a well-understood and well-defined computingdevice 604 versus the ill-understood and ill-defined computing device606), a composite digital representation of the two scenarios, or someother digital representation, and then send those digitalrepresentations to computational instance 322 via an establishedprotocol 622 (here, labeled “Discovered Devices and Responses”).

Then, in response, computational instance 322 may store the informationcontained in these digital representations. In a further aspect,however, based on the receipt and its analysis of the informationcontained in these digital representations, computational instance 322may also generate new tasks to be queued in an associated task listand/or update existing tasks in that task list. In this example, tasksmay be created based on the information contained in the receiveddigital representations, which is indicative of the informationcontained in responses 618 and 620.

Concerning response 618, computational instance 322 may generate a taskfor edge gateway 602 to engage a specific component of computing device604 at a specific time, using a specific communication protocol, andthen place that task in a task list with which edge gateway 602routinely (e.g., periodically) communicates. Concerning response 620,realizing that edge gateway 602 is not configured to communicate via theproprietary protocol communicated with computing device 606,computational instance may generate a task for edge gateway 602containing a new local program or logic to run on edge gateway 602, anupdate to the existing local programs or logic running on edge gateway602, or both, that allows edge gateway 602 to become configured tocommunicate with computing device 606. The computational instance maythen place that task in the same task list as above. Then, the next timeedge gateway 602 interacts with computational instance 322, it mayreceive and/or retrieve these tasks 624 (illustrated here as “Tasks”).

Once edge gateway 602 receives these tasks, it may take responsiveactions and send follow-up commands 626 and 630, to computing devices604 and 606, respectively. Concerning follow-up command 626, edgegateway 602 may convert the information contained in the task fromcomputational instance 322 into the protocol it knows computing device604 is configured to support (i.e., the established, specificcommunication protocol it has with computing device 604). Then, onceconverted, edge gateway 602 may command computing device 604 to engage aspecific component at a specific time. Edge gateway 602 may also performfollow-up management (e.g., observation and control) of computing device604, based on local programs or logic, updated tasks from thecomputational instance, or other factors, and receive one or morefollow-up responses 628 to the same.

Concerning follow-up command 630, edge gateway 602 may convert theinformation contained in the task from the computational instance intothe protocol it knows how to implement (e.g., an executable file or codecontaining a new local program or logic to run on the edge gateway viaan edge gateway software application, an update to the existing localprograms or logic running on the edge gateway, or both) that allows theedge gateway to be configured to communicate with computing device 606(e.g., via the proprietary protocol of computing device 606). Then, onceedge gateway 602 can effectively communicate with computing device 606,it may send a follow-up command 630 command to computing device 606 tosend a list of its state and capabilities, that, here, computing device606 may understand for the first time. Then, in response, edge gateway602 may receive a follow-up response 632 containing information that isboth helpful to edge gateway 602 in managing computing device 606 on thenetwork and in a language the edge gateway is configured to support(e.g., a list of components that may be measured and controlled incomputing device 606 via its proprietary protocol with the edgegateway).

These examples explained in connection with FIG. 6B are for purpose ofexample only. Device discovery, as detailed above in connection with atleast FIG. 6A and below in connection with FIGS. 7A-9, may be a highlyconfigurable procedure that can have more or fewer steps, iterations,and protocols, and the operations of each in connection with any numberof devices on a specified network may vary.

In but some examples, the entire managed network 600, as well as edgegateway 602 and all of the devices thereunder (computing devices 604,606, 608, 610, and 612) could be implemented in connection with or as apart of managed network 300 in FIG. 5A (e.g., as a configuration item).Thus, because in some cases, the steps, iterations, and protocol shownin FIGS. 6A and 6B may vary and may be customized, or may otherwisedeviate from the exemplary descriptions above, they should be wellunderstood herein as examples only.

VI. SPECIFIC EXAMPLE EMBODIMENTS OF DISCOVERY AND MANAGEMENT OF IOTDEVICES

FIG. 7 depicts a refrigeration system 700 that includes an integratededge gateway 702, a first refrigeration unit that has a refrigeratorportion with left door actuator 704, a right door actuator 706, and aninternal temperature sensor 708, and a deep-freeze portion with a draweractuator 710 and an internal temperature sensor 712, a secondrefrigeration unit that has a refrigerator portion with left dooractuator 714, a right door actuator 716, and an internal temperaturesensor 718, and a deep-freeze portion with a drawer actuator 720 and aninternal temperature sensor 722, and a third refrigeration unit that hasa refrigerator portion with left door actuator 724, a right dooractuator 726, and an internal temperature sensor 728, and a deep-freezeportion with a drawer actuator 730 and an internal temperature sensor732. Here, edge gateway 702 and some or all of the sensors and actuatorsin the refrigerator system 700 operate on a network (e.g., like managednetwork 600 in FIG. 6A).

In this system, edge gateway 702, although not specifically illustratedas such, is also in communication with a computational instance (e.g.,as illustrated in FIG. 6A at 322), or a proxy server in communicationwith a computational instance (e.g., as illustrated in FIG. 5A at 302and 322, respectively). Either way, edge gateway 702 may discover thestates and capabilities of the sensors and actuators in the refrigeratorsystem 700 via a standardized or proprietary protocol, as furtherdetailed above.

Assuming edge gateway 702 discovers the states and capabilities of thesesensors and devices in refrigerator system 700, edge gateway 702 maycontrol the sensors and actuators in refrigeration system 700 based onan established local program or logic, with one more predefinedoperational parameters (e.g., if the internal temperature sensor 708 ofthe refrigerator in the first refrigeration unit shows a temperature ofover 40 degrees Fahrenheit, command the left and right doors of therefrigerator to close using actuators 704 and 706). Further, thisorchestration of the sensors and actuators in refrigeration system 700based on local programs or logic that may be updated periodically and/ordynamically based on the state and capabilities of the individualdevices, or the sub-environment, environment, or network in which theyare operating, and via one or more protocols (e.g., the first, second,or third refrigeration units, etc.). Alternatively or additionally, thisorchestration could be based on programs or logic stored elsewhere(e.g., on computational instance 322).

With this discovered information of the states and capabilities of thesesensors and actuators in refrigerator system 700, however, the edgegateway may also convert this information into one or more digitalrepresentations to communicate to the computational instance in alanguage and with a protocol that the computational instance isconfigured to support.

In one example, edge gateway 702 may convert the discovered informationof the states and capabilities of these sensors and devices in therefrigerator system into digital representations of the same and sendthem to computational instance 322 for further storage and analysis(e.g., via the CMDB 500 and/or task list 502). As detailed above, onceedge gateway 702 has gathered and converted the data received from thedevices in refrigerator system 700, it may further organize and batchthe data before sending it to computational instance 322. And, as alsodescribed above, the detail and granularity of these digitalrepresentations can be adjusted based on requests by the computationalinstance (e.g., based on workflows defined for the refrigerator system),the user (e.g., based on the user's selection of the most meaningfulrepresentation of refrigerator system 700 via a user interface), orother such conditions. Accordingly, this process may progressiteratively or recursively. Under any of these scenarios, however,organizing and batching the information and/or digital representationscreated by edge gateway 702 before sending digital representations tocomputational instance 322 allows edge gateway 702 to both effectivelymanage the devices of refrigerator system 700 locally, as well asdeliver digital representations of those devices to the computationalinstance using protocol computational instance 322 supports.

In a further aspect, additional tasks may be created or provided bycomputational instance 322 in response to these digital representations.For instance, computational instance 322 may create a task that dealswith a specific component of a specific refrigeration unit inrefrigeration system 700 (e.g., a task that causes edge gateway 702 tocommand left door actuator 704 to retract and close the door). Inanother example, computational instance 322, based on the receiveddigital representations, may create a task that introduces a new localprogram or logic to be implemented by the edge gateway (e.g., logic thatis executed by an edge gateway software application and causes any ofthe deep-freeze drawer actuators 710, 720, 730 to open the respectivedrawer if any of the respective deep-freeze internal temperature sensors712, 722, 732 observe a temperature below a certain threshold).

Like other example embodiments illustrated herein, the computationalinstance may also catalog and analyze information contained in thedigital representations regarding dependencies and relationships betweenthe devices in refrigeration system 700, and these dependencies andrelationships may be displayed on a web-based interface and/orrepresented in a hierarchical fashion. Thus, like other systemsdiscussed herein, adding, changing, or removing such dependencies andrelationships may be accomplished by way of an intuitive user interface.

FIG. 7B depicts an example compositional view of a communicationenvironment involving a remote network management architecture includingrefrigeration system 700. Specifically, FIG. 7B depicts a compositionalview of refrigeration system 700, shown in FIG. 7B as RefrigerationSystem (RS) 734, which receives sensor and actuator data 736 fromRefrigeration Unit 1 (RU1), Refrigeration Unit 2 (RU2), andRefrigeration Unit 3 (RU3). This data for each of RU1, RU2, and RU3 isreceived from one or more sensors and actuators making up RU1, RU2, andRU3. For example, looking to RU3, there is a refrigerator portion,Refrigerator (R3) 738, which receives sensor and actuator data 740 fromLeft Door Sensor (DRL3), Right Door Sensor (DRR3), and TemperatureSensor (TR3), and a deep-freeze portion, Deep Freeze (DF3) 742, whichreceives sensor and actuator data 744 from Drawer Sensor (DDF3) andTemperature Sensor (TDF3).

FIG. 7C depicts an example state representation of a communicationenvironment involving a remote network management architecture includingrefrigeration system 700. Specifically, FIG. 7C depicts an example staterepresentation based on processing information received from the sensorsand actuators in refrigeration system 700 (such as that illustrated incompositional view of the refrigeration system shown in FIG. 7B). InFIG. 7C, an example state representation 746 is provided for arefrigeration system (e.g., as shown in FIG. 7B) that includesindicators for a variety of metrics (shown here as “Name,” “ID,”“Location,” “Common Properties,” and so on (shown here as “ . . . ”)).Contributing to the metrics for the refrigeration system in FIG. 7C isdata from each of the refrigeration units (e.g., RU1, RU2, and RU3 inFIG. 7B), shown here as example state representation 748 that includesindicators for a variety of metrics (shown here as “ID”), as well ascalculated fields (shown here as “Door/Drawer Status (Open/Closed),”“Average Fridge Temperature,” and “Average Freezer Temperature”).

Also contributing to the metrics for the refrigeration system in FIG. 7Cis data from each of the sensors and actuators in the refrigerationunits, including those in the refrigerator portion, shown here asexample state representation 750 that includes indicators for a varietyof metrics (shown here as “ID”), as well as calculated fields (shownhere as “Door Status Left (Open/Closed),” “Door Status Right(Open/Closed),” “Door Status (Open/Closed),” and “Temperature”), as wellas those in the deep-freeze portion, shown here as example staterepresentation 752 that includes indicators for a variety of metrics(shown here as “ID”), as well as calculated fields (shown here as“Drawer Status (Open/Closed)” and “Temperature”).

FIG. 7D depicts an example dependency architecture representation of acommunication environment involving a remote network managementarchitecture including refrigeration system 700, in accordance withexample embodiments. Specifically, FIG. 7D depicts a dependencyarchitecture 754 of refrigeration system 700, which illustrates that thedata modeling and processing that occurs in connection with aRefrigeration System (RS) depends on data received from RefrigerationUnit 1 (RU1), Refrigeration Unit 2 (RU2), and Refrigeration Unit 3(RU3), each of which depends on data received from its individual one ormore sensors and actuators, shown here as a refrigerator portion,Refrigerator (R3), and a deep-freeze portion, Deep Freeze (DF3). In thisway, as shown at state representation 756, the “state” (e.g., a summaryor model) of any higher portion of the refrigeration system (shown hereas “State A”) is based on, calculated from, or depends on the “state” ofone or more components below it on the dependency architecture (shownhere as “State B”).

In this way, as illustrated at state representation 758, the “state” ofthe components of the dependency architecture may be updated wheneverthe “state” of one or more components below it on the dependencyarchitecture are updated. In this way, as shown in state representation760, as the “state” of any one or more components that are lower on thedependency architecture (shown here as “State B”) change, one (or more)of the higher portions of the refrigeration system (shown here as “StateA”) are told to recalculate itself and will do so.

FIG. 7E depicts an example state representation of communicationenvironment capabilities involving a remote network managementarchitecture including refrigeration system 700, in accordance withexample embodiments. Specifically, FIG. 7E depicts an example statecapabilities based on processing information received from the sensorsand actuators in refrigeration system 700 (such as that illustrated incompositional view of the refrigeration system shown in FIG. 7B and theexample state representations of FIG. 7C). In FIG. 7E, an example staterepresentation 762 of communication environment capabilities is providedfor a refrigeration system (e.g., as shown in FIG. 7B). Thisrepresentation includes indicators for a variety of metrics that arecapable of being observed and calculated (shown here as “Name,” “Type?(Optional),” “Script” and so on (shown here as “ . . . ”)), which mayinclude setting the system in an on or off mode based on one or moreconditions, toggling between calculated metrics, setting targettemperatures for the system (or its subparts (e.g., RU1, RU2, and/orRU3)), and so on. Contributing to these capabilities of therefrigeration system in FIG. 7E is data from each of the sensors andactuators in the refrigeration units, including those in therefrigerator portion, shown here as example state representation ofcommunication environment capabilities 764 that includes indicators fora variety of metrics (shown here as “ID,”), as well as calculated fields(shown here as “Door Status (Open/Closed)” and so on (shown here as “ .. . ”)) and capabilities (shown here as “Ref: On/Off” and “Ref: SetTarget Temperature”), as well as those in the deep-freeze portion, shownhere as example state representation of communication environmentcapabilities 766 that includes indicators for a variety of metrics(shown here as “ID,”), as well as calculated fields (shown here as“Drawer Status (Open/Closed)” and so on (shown here as “ . . . ”)) andcapabilities (shown here as “Ref: On/Off” and “Ref: Set TargetTemperature”).

FIG. 8 depicts a conference room system 800 that includes an integratededge gateway 802, a left conference room door actuator 804, a rightconference room door actuator 806, a motion sensor 808, a thermostat810, a television 812, a telephone 814, and adjustable lighting fixture816. Here, edge gateway 802 and all of the devices in conference roomsystem 800 operate on a network (e.g., like managed network 600 in FIG.6A).

In this system, edge gateway 802, although not specifically illustrated,is also in communication with a computational instance (e.g., asillustrated in FIG. 6A at 322), or a proxy server in communication witha computational instance (e.g., as illustrated in FIG. 5A at 302 and322, respectively). Either way, edge gateway 802 may discover the statesand capabilities of all of the devices in the conference room system 800via a standardized or proprietary protocol, as further detailed above.

Assuming edge gateway 802 discovers all of the states and capabilitiesof these devices in conference room system 800, although the devices mayseem fairly unrelated (compared to, for example, the sensors andactuators in refrigerator system 700) the edge gateway may control allof the devices in conference room system 800 based on an establishedlocal program or logic, with one more predefined operational parameters(e.g., if motion sensor 808 detects motion, send a command to adjustablelighting fixture 816 to operate at predetermined level and color).Further, this orchestration of devices in conference room system 800 maybe updated periodically and/or dynamically based on the state andcapabilities of the individual devices, or the sub-environment,environment, or network in which they are operating, and via one or moreprotocols.

For example, edge gateway 802 may be configured to run a local programat a specified time (e.g., 8 a.m., Pacific Standard Time), that causesit to send commands to door actuators 804 and 806 to open the conferencerooms doors, adjustable light fixture 816 to operate at a predeterminedlevel and color, television 812 to display the morning news, andthermostat 810 to ensure the conference room temperature is 76 degreeFahrenheit (and if not, adjust an associated HVAC system accordingly).Then, for example, in response to an outgoing call being placed viatelephone 814, edge gateway 802 may run local programs that cause it tosend commands reverting some of the conditions it created that may notbe as conducive to a conference call (e.g., send commands to dooractuators 804 and 806 to close the conference rooms doors, to television812 to turn off, and to adjustable light fixture 816 to operate at adifferent predetermined level and color because television 812 is nowoff). Finally, in this example, when the call is completed via telephone814, edge gateway 802 may run another local program that causes it tosend commands reestablishing some of the conditions it created prior tothe conference call (e.g., send commands to door actuators 804 and 806to reopen the conference rooms doors, to television 812 to turn back on,and to adjustable light fixture 816 to operate at the originalpredetermined level and color because television 812 is back on again).Thus, edge gateway 802 may act responsively to conditions that occurwithin conference room system 800 without further input fromcomputational instance 322.

Aside from being able to run local programs or logic in conference roomsystem 800, however, edge gateway 802 may also send discoveredinformation to the computational instance 322 in the form of one or moredigital representations. This may be facilitate further processing andmanagement insight from the computational instance for the devices inthe conference room system.

For example, knowing the attributes of the devices (e.g., states andcapabilities) in conference room system 800, edge gateway 802 mayactively track how many times per day over a specified time period(e.g., from 8 to 10 a.m., Pacific Standard Time) it performs the processdescribed above of responding to an outgoing conference call viatelephone 814. Edge gateway 802 may then create digital representationsof the frequency of this process, as well as discovered device data(e.g., frequency of incoming conference calls via telephone 814), andsend them to computational instance 322 for further storage andanalysis.

In response, computational instance 322 may create a task that containslogic reconfiguring these processes by edge gateway 802 based on otherfactors (e.g., begin closing the conference rooms doors and turning offthe television for incoming calls as well, only perform any of theseprocesses during a specific time period and only on weekdays). In otherexamples, however, the task created by computational instance 322 inresponse to receiving the digital representations of the processes abovemay be more targeted (e.g., turn off television 812 until furthernotice). Either way, as described above, the detail and granularity ofthese digital representations can be adjusted based on requests by thecomputational instance (e.g., based on optimized workflow in theenterprise), the user (e.g., based on the user's selection of the mostmeaningful representation of conference room system 800, or the devicesit wants to interact with, generally, or at that time specifically, viathe user interface), or other such conditions. Accordingly, this processmay progress iteratively or recursively.

Like other example embodiments illustrated herein, computationalinstance 322 may also catalog and analyze information contained in thedigital representations regarding dependencies and relationships betweenthe devices in conference room system 800, and these dependencies andrelationships may be displayed on a web-based interface and/orrepresented in a hierarchical fashion. Thus, like other systemsdiscussed herein, adding, changing, or removing such dependencies andrelationships may be accomplished by way of an intuitive user interface.

FIG. 9 depicts a passenger train system 900 that includes a passengercompartment 902, a conductor compartment 904, an integrated edge gateway906, a rear door actuator 908, a front door actuator 910, a passengercompartment motion sensor 912, a conductor compartment motion sensor914, operation hub 916, and display panels 918 configured to display auser interface. Here, again, edge gateway 906 and all of the devices inpassenger train system 900 operate on a network (e.g., like managednetwork 600 in FIG. 6A) and edge gateway 906 may discover the states andcapabilities of some or all of the devices in the passenger train system900 via standardized or proprietary protocols, as further detailedabove.

In this system, edge gateway 906, although not specifically illustrated,is also in communication with a computational instance (e.g., asillustrated in FIG. 6A at 322), or a proxy server in communication(e.g., wireless communication) with a computational instance (e.g., asillustrated in FIG. 5A at 302 and 322, respectively).

Assuming edge gateway 906 discovers the states and capabilities of thesedevices in passenger train system 900, although the devices may seemfairly unrelated (like conference room system 800), edge gateway 906 maycontrol and orchestrate the devices in passenger train system 900 basedon an established local program or logic, with one more predefinedoperational parameters (e.g., if motion sensor 912 detects sudden motionin passenger compartment 902, send command to door actuators 908 and 910to close doors, or if motion sensor 914 does not detect motion inconductor compartment 904, send command to front door actuator 910 toopen door so conductor may be checked on by passengers, if dooractuators 908 and/or 910 are forced open by the doors being opened, sendcommand to operation hub 916 to stop the train, etc.). Further, althoughthis orchestration of devices may be updated periodically and/ordynamically based on the state and capabilities of the individualdevices, FIG. 9 presents a scenario in which these devices and the edgegateway may lose connectivity with computational instance 322 via tunnel920 and be restricted to running local programs and logic, and togathering, converting, organizing, and batching information fromdiscovered devices, as well creating digital representations based onlyon the same (i.e., via a “local network”).

For example, edge gateway 906 may be configured to run a local programbased on operational parameters of the passenger train via data receivedfrom passenger train operation hub 916 (e.g., the train beginstravelling over 50 mph), that causes it to send commands to dooractuators 908 and 910 to close the doors, turn on motion sensors 912 and914, and cause display panels 918 to display a user interfacesummarizing information about the passenger train's operation (e.g.,current speed, whether passenger compartment motion sensor 912 isdetecting any passenger movement, whether door actuators 908 and 910have closed the doors, etc.).

In this scenario, because edge gateway 906 may be configured to runlocal programs or logic for all of the devices in passenger train system900, once the passenger train enters tunnel 920, the edge gateway willbe able to continue to discover and manage devices under protocol it hasestablished with devices on the network the instance it losesconnectivity with computational instance 322, as well as any devicesthat may join the network between the time the edge gateway losesconnectivity when entering tunnel 920 and then regains connectivityafter exiting the tunnel (e.g., a passenger turning on a computingdevice for the first time in the tunnel, additional passenger cars(containing numerous new devices) being added within the tunnel, etc.).

In one scenario, after edge gateway 906 loses connectivity with thecomputational instance, edge gateway 906 may default to running a localprogram that causes it to continue to command any device it detects onthe local network to report its state and capabilities, and, if edgegateway can't effectively communicate with a specific device (e.g., viaa proprietary protocol), then it may ignore the partially discovereddevice for device management purposes.

In another scenario, however, edge gateway 906 may still send discoveredinformation (even if only partially discovered) to computationalinstance 322 in the form of one or more digital representations forfurther processing (e.g., management insight from the computationalinstance for the devices in the passenger train system), regardless ofthe loss of connectivity with the computational instance.

For example, knowing all of the attributes of the devices (e.g., statesand capabilities) in passenger train system 900, and detecting one ormore new devices joining the local network during the loss ofconnectivity that it cannot effectively communicate with, edge gateway906 may actively track and catalog any changes during this loss ofconnectivity, both for the known and unknown devices on the localnetwork. For example, during the loss of connectivity, if the conductordecides he no longer wants to see a particular metric displayed via userinterface on display panels 918 (e.g., whether the rear door actuators908 has closed the door, etc.) or adjust the granularity of a particularmetric (e.g., instead of seeing whether door actuators 908 and 910 haveclosed the doors individually, the conductor elects to only be notifiedvia the user interface if any door is open), then he may be able toadjust those displayed metrics via the user interface locally. Becausethese adjustments may have further reaching consequences on the edgegateway's ability to manage the devices in passenger train system 900once connectivity is reestablished, however, they are worth tracking andpotentially reporting to the computational instance.

For example, based on the conductor's selection of the most meaningfulrepresentation of passenger train system 900 or the devices he wanted tointeract with therein, the manner in which edge gateway 906 discoversand converts discovered device information into digital representationsfor computational instance 322 (as well as the way it organizes and/orbatches the same), may be adjusted by computational instance 322 (e.g.,based on optimized workflow as re-determined in the enterprise afterconnectivity was reestablished), and may be delivered to edge gateway906 via a number of methods (e.g., via an updated task). In this way, aseemingly local response to a display screen may cause computationalinstance 322 to create a task reconfiguring the local program or logicrun by edge gateway 906 (e.g., via an edge gateway software application)to discover device information and convert it to a digitalrepresentation computational instance 322 is configured to processmoving forward.

In another example, during the loss of connectivity, edge gateway 906may detect one or more new devices that have joined the local networkthat it cannot effectively communicate with (e.g., based on aproprietary protocol). In this example, instead of ignoring the deviceit may have not be able to effectively communicate with initially, untilconnectivity is reestablished, edge gateway 906 can convert, organize,and batch the information it received into digital representations thatare well understood by and potentially useful for computational instance322.

Then, once connectivity is reestablished, the computational instance maystore the information and/or generate new tasks for edge gateway 906 toimplement (e.g., generate a task for edge gateway 906 to run updatedlogic that allows edge gateway 906 to be configured to communicate withthe partially discovered device), which may result in furtherinformation being discovered by the edge gateway. In this way, capturingthe instance of a device with which edge gateway 906 may not be able tocommunicate during the loss of connectivity may cause computationalinstance 322 to create a task reconfiguring the local program or logicrun by edge gateway 906 to discover similar device information it wouldnot otherwise know how to discover, and convert it to a meaningfuldigital representations for computational instance 322 moving forward.

And of course, like other example embodiments illustrated herein,computational instance 322 may also catalog and analyze informationcontained in the digital representations regarding dependencies andrelationships between the devices in passenger train system 900, andthese dependencies and relationships may be displayed on a web-basedinterface and/or represented in a hierarchical fashion, the addition,change, or removal of may be accomplished by way of an intuitive userinterface, as discussed above.

VII. EXAMPLE OPERATIONS

FIG. 10 is a flow chart illustrating an example embodiment. The processillustrated by FIG. 10 may be carried out by a computing device, such ascomputing device 100, and/or a cluster of computing devices, such asserver cluster 200. However, the process can be carried out by othertypes of devices or device subsystems. For example, the process could becarried out by a portable computer, such as a laptop or a tablet device.

The embodiments of FIG. 10 may be simplified by the removal of any oneor more of the features shown therein. Further, these embodiments may becombined with features, aspects, and/or implementations of any of theprevious figures or otherwise described herein.

In FIG. 10, a computational instance that manages a managed networkcontaining computing devices, at least some of which communicate by wayof a proprietary protocol is illustrated. The computational instanceincludes comprising a database storing representations of the computingdevices in the managed network as configuration items, and one or moresets of program logic configured to support the proprietary protocol,and one or more server devices configured to perform several steps.Furthermore, the managed network may be communicatively coupled to thecomputational instance by way of at least one wireless network.

At block 1000, the one or more server devices receive, from an edgegateway software application associated with the managed network, arequest that identifies a particular computing device on the managednetwork that communicates by way of the proprietary protocol. In someembodiments, the request may identify the particular computing device byspecifying an open transmission control protocol (TCP) or user datagramprotocol (UDP) port on the particular computing device.

At block 1002, the one or more server devices, based on the request,select a set of the program logic, from the one or more sets of programlogic, that is configured to support the proprietary protocol.

At block 1004, the one or more server devices transmit, to the edgegateway software application, a representation of the program logic,receipt of which is configured to cause the edge gateway softwareapplication to be able to execute the set of program logic and obtainthereby configuration and state information from the particularcomputing device. Additionally, the representation of the program logicmay be a script that is executable by the edge gateway softwareapplication.

At block 1006, the one or more server devices receive, from the edgegateway software application, the configuration and state information.

At block 1008, the one or more server devices store, in the database,the configuration and state information. Additionally, the database mayalso store mappings between: (i) TCP or UDP ports, and (ii) the sets ofprogram logic, and wherein selecting the set of program logic comprisesfinding a mapping from the open TCP or UDP port on the particularcomputing device to the set of program logic.

FIG. 11 is a flow chart illustrating an example embodiment. The processillustrated by FIG. 11 may be carried out by a computing device, such ascomputing device 100, and/or a cluster of computing devices, such asserver cluster 200. However, the process can be carried out by othertypes of devices or device subsystems. For example, the process could becarried out by a portable computer, such as a laptop or a tablet device.

The embodiments of FIG. 11 may be simplified by the removal of any oneor more of the features shown therein. Further, these embodiments may becombined with features, aspects, and/or implementations of any of theprevious figures or otherwise described herein.

In FIG. 11, an edge gateway software application is configured forplacement on the edge gateway device of a managed network is shown. Theedge gateway software application is configured for communication with acomputational instance of a remote network management platform, whereinthe managed network contains computing devices and the computationalinstance manages the computing devices. In some embodiments, the managednetwork may be a local area network, personal area network, or abus-based network. Furthermore, the managed network may becommunicatively coupled to the computational instance by way of at leastone wireless network.

At block 1100, the edge gateway software application is configured todetermine that a particular computing device is disposed upon themanaged network, and that the particular computing device does notsupport control by way of the one or more specific standardcommunication protocols. In some examples, the edge gateway softwareapplication may be configured to determine that the particular computingdevice is disposed upon the managed network by probing a range ofInternet Protocol (IP) addresses of the managed network for devicesconfigured with IP addresses within the range. In other examples, theedge gateway software application may be configured to determine thatthe particular computing device does not support control by way of theone or more specific standard communication protocols by attempting toprobe the particular computing device by way of each of the one or morespecific standard communication protocols and determining that theprobes have failed to access the particular computing device.

At block 1102, the edge gateway software application is also configuredto transmit, to the computational instance, an identifier of theparticular computing device. Additionally, the identifier may specify anopen transmission control protocol (TCP) or user datagram protocol (UDP)port on the particular computing device that is associated with theproprietary protocol.

At block 1104, the edge gateway software application is additionallyconfigured to receive, from the computational instance, a set of programlogic, from the one or more sets of program logic, that is configured tosupport a proprietary protocol. In a further aspect, the edge gatewaysoftware application may be further configured to install the set ofprogram logic for execution by the edge gateway device. In addition, theset of program logic may be a script that is executable by the edgegateway device.

At block 1106, the edge gateway software application is also configuredto communicate, by way of the proprietary protocol, with the particularcomputing device, wherein the communication results in the edge gatewaysoftware application receiving configuration and state information fromthe particular computing device. Furthermore, the edge gateway softwareapplication may also be configured to communicate, by way of theproprietary protocol, with the particular computing device by executingthe set of program logic. In other examples, the edge gateway softwareapplication is also configured to communicate, by way of the proprietaryprotocol, with the particular computing device by accessing, by way ofthe proprietary protocol, the particular computing device and obtaining,by way of the proprietary protocol, the configuration state andinformation.

At block 1108, the edge gateway software application is additionallyconfigured to transmit, to the computational instance, the configurationstate and information.

VIII. CONCLUSION

The present disclosure is not to be limited in terms of the particularembodiments described in this application, which are intended asillustrations of various aspects. Many modifications and variations canbe made without departing from its scope, as will be apparent to thoseskilled in the art. Functionally equivalent methods and apparatuseswithin the scope of the disclosure, in addition to those describedherein, will be apparent to those skilled in the art from the foregoingdescriptions. Such modifications and variations are intended to fallwithin the scope of the appended claims.

The above detailed description describes various features and operationsof the disclosed systems, devices, and methods with reference to theaccompanying figures. The example embodiments described herein and inthe figures are not meant to be limiting. Other embodiments can beutilized, and other changes can be made, without departing from thescope of the subject matter presented herein. It will be readilyunderstood that the aspects of the present disclosure, as generallydescribed herein, and illustrated in the figures, can be arranged,substituted, combined, separated, and designed in a wide variety ofdifferent configurations.

With respect to any or all of the message flow diagrams, scenarios, andflow charts in the figures and as discussed herein, each step, block,and/or communication can represent a processing of information and/or atransmission of information in accordance with example embodiments.Alternative embodiments are included within the scope of these exampleembodiments. In these alternative embodiments, for example, operationsdescribed as steps, blocks, transmissions, communications, requests,responses, and/or messages can be executed out of order from that shownor discussed, including substantially concurrently or in reverse order,depending on the functionality involved. Further, more or fewer blocksand/or operations can be used with any of the message flow diagrams,scenarios, and flow charts discussed herein, and these message flowdiagrams, scenarios, and flow charts can be combined with one another,in part or in whole.

A step or block that represents a processing of information cancorrespond to circuitry that can be configured to perform the specificlogical functions of a herein-described method or technique.Alternatively or additionally, a step or block that represents aprocessing of information can correspond to a module, a segment, or aportion of program code (including related data). The program code caninclude one or more instructions executable by a processor forimplementing specific logical operations or actions in the method ortechnique. The program code and/or related data can be stored on anytype of computer readable medium such as a storage device including RAM,a disk drive, a solid state drive, or another storage medium.

The computer readable medium can also include non-transitory computerreadable media such as computer readable media that store data for shortperiods of time like register memory and processor cache. The computerreadable media can further include non-transitory computer readablemedia that store program code and/or data for longer periods of time.Thus, the computer readable media may include secondary or persistentlong term storage, like ROM, optical or magnetic disks, solid statedrives, compact-disc read only memory (CD-ROM), for example. Thecomputer readable media can also be any other volatile or non-volatilestorage systems. A computer readable medium can be considered a computerreadable storage medium, for example, or a tangible storage device.

Moreover, a step or block that represents one or more informationtransmissions can correspond to information transmissions betweensoftware and/or hardware modules in the same physical device. However,other information transmissions can be between software modules and/orhardware modules in different physical devices.

The particular arrangements shown in the figures should not be viewed aslimiting. It should be understood that other embodiments can includemore or less of each element shown in a given figure. Further, some ofthe illustrated elements can be combined or omitted. Yet further, anexample embodiment can include elements that are not illustrated in thefigures.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purpose ofillustration and are not intended to be limiting, with the true scopebeing indicated by the following claims.

What is claimed is:
 1. A system, comprising: one or more processors; anda memory comprising machine-readable instructions that, when executed bythe one or more processors, cause the one or more processors to performoperations associated with an edge gateway application, the operationscomprising: receiving, via the one or more processors, one or moreindications associated with one or more first computing devices and oneor more second computing devices in a managed network; determining, viathe one or more processors, that the one or more first computing devicesand the one or more second computing devices do not supportcommunication via a particular communication protocol associated withthe edge gateway application; receiving, via the one or more processors,a representation of a first program logic associated with a firstcommunication protocol from a remote network management platformassociated with the edge gateway application, wherein the one or morefirst computing devices are configured to communicate via the firstcommunication protocol; receiving, via the one or more processors, arepresentation of a second program logic associated with a secondcommunication protocol, different than the particular firstcommunication protocol, from the remote network management platform,wherein the one or more second computing devices are configured tocommunicate via the second communication protocol; executing, via theone or more processors, the first program logic to receive a first setof configuration data, a first set of operational data, or both, fromthe one or more first computing devices via the first communicationprotocol; executing, via the one or more processors, the second programlogic to receive a second set of configuration data, a second set ofoperational data, or both, from the one or more second computing devicesvia the second communication protocol; and transmitting, via the one ormore processors, the first set of configuration data, the second set ofconfiguration data, the first set of operational data, the second set ofoperational data, or a combination thereof, to the remote networkmanagement platform.
 2. The system of claim 1, wherein the managednetwork comprises one or more third computing devices configured tocommunicate with the edge gateway application via the particularcommunication protocol.
 3. The system of claim 2, wherein the operationscomprise: receiving, via the one or more processors, a third set ofconfiguration data, a third set of operational data, or both, from theone or more third computing devices via the particular communicationprotocol; and transmitting, via the one or more processors, the thirdset of configuration data, the third set of operational data, or both,to the remote network management platform.
 4. The system of claim 1,wherein determining that the one or more first computing devices and theone or more second computing devices do not support communication viathe particular communication protocol comprises: transmitting, via theone or more processors, respective probes to the one or more firstcomputing devices and the one or more second computing devices via theparticular communication protocol; and determining, via the one or moreprocessors, that the respective probes have failed to access the one ormore first computing devices and the one or more second computingdevices.
 5. The system of claim 1, wherein the operations comprisetransmitting, via the one or more processors, to the remote networkmanagement platform, a first set of identifiers associated with the oneor more first computing devices and a second set of identifiersassociated with the one or more second computing devices afterdetermining that the one or more first computing devices and the one ormore second computing devices do not support communication via theparticular communication protocol.
 6. The system of claim 5, wherein thefirst set of identifiers are indicative of an open transmission controlprotocol (TCP) or an open user datagram protocol (UDP) port on the oneor more first computing devices.
 7. The system of claim 1, wherein theremote network management platform is communicatively coupled to adatabase comprising the first program logic and the second programlogic.
 8. A method, comprising: receiving, by one or more processorsconfigured to execute an edge gateway application in a managed network,one or more indications associated with one or more first computingdevices and one or more second computing devices in the managed network;determining, by the one or more processors, that the one or more firstcomputing devices and the one or more second computing devices do notsupport communication via a particular communication protocol associatedwith the edge gateway application; transmitting, by the one or moreprocessors, a first set of identifiers associated with the one or morefirst computing devices and a second set of identifiers associated withthe one or more second computing devices; receiving, by the one or moreprocessors, a representation of a first program logic associated with afirst communication protocol from a remote network management platformassociated with the edge gateway application, wherein the remote networkmanagement platform is configured to select and transmit therepresentation of the first program logic to the one or more processorsbased on an association between the first set of identifiers and thefirst program logic; receiving, by the one or more processors, arepresentation of a second program logic associated with a secondcommunication protocol from the remote network management platform,wherein the remote network management platform is configured to selectand transmit the representation of the second program logic to the oneor more processors based on an association between the second set ofidentifiers and the second program logic; executing, by the one or moreprocessors, the first program logic to receive a first set ofconfiguration data, a first set of operational data, or both, from theone or more first computing devices via the first communicationprotocol; executing, by the one or more processors, the second programlogic to receive a second set of configuration data, a second set ofoperational data, or both, from the one or more second computing devicesvia the second communication protocol; and transmitting, by the one ormore processors, the first set of configuration data, the second set ofconfiguration data, the first set of operational data, the second set ofoperational data, or a combination thereof, to the remote networkmanagement platform.
 9. The method of claim 8, wherein the first set ofconfiguration data, the second set configuration data, the first set ofoperational data, the second set of operational data, or a combinationthereof is stored in a database communicatively coupled to the remotenetwork management platform as one or more configuration items.
 10. Themethod of claim 8, wherein the remote network management platform isconfigured to generate and transmit, to the one or more processors, oneor more tasks associated with controlling respective operations of theone or more first computing devices based on the first set ofconfiguration data, the first set of operational data, or both.
 11. Themethod of claim 8, wherein the remote network management platform isconfigured to transmit a graphical user interface to a display device inthe managed network, wherein the graphical user interface comprises amap of the managed network, the map including respective states of theone or more first computing devices in the managed network, respectivedependencies between the one or more first computing devices in themanaged network, or respective metrics associated with the one or morefirst computing devices in the managed network, or a combinationthereof.
 12. The method of claim 8, wherein the managed networkcomprises one or more third computing devices configured to communicatewith the edge gateway application via the particular communicationprotocol.
 13. The method of claim 12, comprising: receiving, by the oneor more processors, a third set of configuration data, a third set ofoperational data, or both, from the one or more third computing devicesvia the particular communication protocol; and transmitting, by the oneor more processors, the third set of configuration data, the third setof operational data, or both, to the remote network management platform.14. The method of claim 8, wherein the first set of identifiers areindicative of a first open transmission control protocol (TCP) port or afirst open user datagram protocol (UDP) port on the one or more firstcomputing devices, the second set of identifiers are indicative of asecond open TCP port or a second open UDP port on the one or more secondcomputing devices, or both.
 15. The method of claim 8, wherein theremote network management platform is configured to generate andtransmit, to the one or more processors, one or more tasks associatedwith controlling respective operations of the one or more secondcomputing devices based on the second set of configuration data, thesecond set of operational data, or both.
 16. A non-transitory,computer-readable medium, comprising instructions that when executed byone or more processors associated with an edge gateway device, cause theone or more processors to perform operations comprising: receiving, viathe one or more processors, one or more indications associated with oneor more first computing devices and one or more second computing devicesin a managed network; determining, via the one or more processors, thatthe one or more first computing devices and the one or more secondcomputing devices do not support communication via a particularcommunication protocol associated with the edge gateway device;receiving, via the one or more processors, a representation of a firstprogram logic associated with a first communication protocol from aremote network management platform associated with the edge gatewaydevice, wherein the one or more first computing devices are configuredto communicate via the first communication protocol; receiving, via theone or more processors, a representation of a second program logicassociated with a second communication protocol different than theparticular communication protocol from the remote network managementplatform, wherein the one or more second computing devices areconfigured to communicate via the second communication protocol;executing, via the one or more processors, the first program logic toreceive a first set of configuration data, a first set of operationaldata, or both, from the one or more first computing devices via thefirst communication protocol; executing, via the one or more processors,the second program logic to receive a second set of configuration data,a second set of operational data, or both, from the one or more secondcomputing devices via the second communication protocol; transmitting,via the one or more processors, the first set of configuration data, thesecond set of configuration data, the first set of operational data, thesecond set of operational data, or a combination thereof, to the remotenetwork management platform; receiving, from the remote networkmanagement platform, via the one or more processors, (1) one or moretasks associated with controlling respective operations of the one ormore first computing devices based on the first set of configurationdata, the first set of operational data, or both, or (2) one or moreadditional tasks associated with controlling respective additionaloperations of the one or more second computing devices based on thesecond set of configuration data, the second set of operational data, orboth; and transmitting, via the one or more processors, respectivecommands to the one or more first computing devices to control therespective operations of the one or more first computing devices,respective additional commands to the one or more second computingdevices to control the respective additional operations of the one ormore second computing devices, or both.
 17. The non-transitory,computer-readable medium of claim 16, wherein the operations comprisetransmitting, to the remote network management platform, via the one ormore processors, a first set of identifiers associated with the one ormore first computing devices after determining that the one or morefirst computing devices do not support communication via the particularcommunication protocol.
 18. The non-transitory, computer-readable mediumof claim 16, wherein the remote network management platform isconfigured to transmit a graphical user interface to a display device inthe managed network, wherein the graphical user interface comprises amap of the managed network, the map including respective states of theone or more first computing devices in the managed network, respectivedependencies between the one or more first computing devices in themanaged network, or respective metrics associated with the one or morefirst computing devices in the managed network, or a combinationthereof.
 19. The non-transitory, computer-readable medium of claim 16,wherein the first set of configuration data, the second set ofconfiguration data, the first set of operational data, the second set ofoperational data, or a combination thereof, is stored in a databasecommunicatively coupled to the remote network management platform as oneor more configuration items.
 20. The non-transitory, computer-readablemedium of claim 16, wherein the managed network comprises one or morethird computing devices configured to communicate with the edge gatewaydevice via the particular communication protocol, and wherein theoperations comprise: receiving, via the one or more processors, a thirdset of configuration data, a third set of operational data, or both,from the one or more third computing devices via the particularcommunication protocol; and transmitting, via the one or moreprocessors, the third set of configuration data, the third set ofoperational data, or both, to the remote network management platform.